- 浏览: 61300 次
- 性别:
- 来自: 北京
最新评论
-
scu_cxh:
您好,我在学习hadoop方面的东西,想做一个对task监控的 ...
JobClient应用概述 -
bennie19870116:
看不到图呢...
Eclipse下配置使用Hadoop插件
一、环境
1、hadoop 0.20.2
2、操作系统Linux
二、背景
1、最近写MR的代码,总在想统计一些错误的数据出现的次数,发现如果都写在reduce的输出里太难看了,所以想找办法专门输出一些统计数字。
2、翻看《hadoop权威指南》第8章第1节的时候发现能够自定义计数器,但都是基于0.19版本写的,好多函数都不对,改动相对较大。
3、基于上面2个理由,写个文档,记录一下。
三、实现
1、前提:写入一个文件,规范的是3个字段,“\t”划分,有2条异常,一条是2个字段,一条是4个字段,内容如下:
jim 1 28
kate 0 26
tom 1
kaka 1 22
lily 0 29 22
2、统计处不规范的数据。我没有写reduce,因为不需要输出,代码如下,先看代码
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Counter;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class MyCounter {
public static class MyCounterMap extends Mapper<LongWritable, Text, Text, Text> {
public static Counter ct = null;
protected void map(LongWritable key, Text value,
org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, Text, Text>.Context context)
throws java.io.IOException, InterruptedException {
String arr_value[] = value.toString().split("\t");
if (arr_value.length > 3) {
ct = context.getCounter("ErrorCounter", "toolong");
ct.increment(1);
} else if (arr_value.length < 3) {
ct = context.getCounter("ErrorCounter", "tooshort");
ct.increment(1);
}
}
}
public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: MyCounter <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "MyCounter");
job.setJarByClass(MyCounter.class);
job.setMapperClass(MyCounterMap.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
3、启动命令如下:
hadoop jar /jz/jar/Hadoop_Test.jar jz.MyCounter /jz/* /jz/06
对于小于3个字段的采用tooshort统计,大于3个字段的采用toolong统计
4、结果如下(红色部分):
10/08/04 17:29:15 INFO mapred.JobClient: Job complete: job_201008032120_0019
10/08/04 17:29:15 INFO mapred.JobClient: Counters: 18
10/08/04 17:29:15 INFO mapred.JobClient: Job Counters
10/08/04 17:29:15 INFO mapred.JobClient: Launched reduce tasks=1
10/08/04 17:29:15 INFO mapred.JobClient: Rack-local map tasks=1
10/08/04 17:29:15 INFO mapred.JobClient: Launched map tasks=6
10/08/04 17:29:15 INFO mapred.JobClient: ErrorCounter
10/08/04 17:29:15 INFO mapred.JobClient: tooshort=1
10/08/04 17:29:15 INFO mapred.JobClient: toolong=1
10/08/04 17:29:15 INFO mapred.JobClient: FileSystemCounters
10/08/04 17:29:15 INFO mapred.JobClient: FILE_BYTES_READ=6
10/08/04 17:29:15 INFO mapred.JobClient: HDFS_BYTES_READ=47
10/08/04 17:29:15 INFO mapred.JobClient: FILE_BYTES_WRITTEN=234
10/08/04 17:29:15 INFO mapred.JobClient: Map-Reduce Framework
10/08/04 17:29:15 INFO mapred.JobClient: Reduce input groups=0
10/08/04 17:29:15 INFO mapred.JobClient: Combine output records=0
10/08/04 17:29:15 INFO mapred.JobClient: Map input records=5
10/08/04 17:29:15 INFO mapred.JobClient: Reduce shuffle bytes=36
10/08/04 17:29:15 INFO mapred.JobClient: Reduce output records=0
10/08/04 17:29:15 INFO mapred.JobClient: Spilled Records=0
10/08/04 17:29:15 INFO mapred.JobClient: Map output bytes=0
10/08/04 17:29:15 INFO mapred.JobClient: Combine input records=0
10/08/04 17:29:15 INFO mapred.JobClient: Map output records=0
10/08/04 17:29:15 INFO mapred.JobClient: Reduce input records=0
四、总结
1、其实hadoop权威指南写的很清楚了,但是由于版本不一样,所以很多方法也不同,总一下,主要有以下不同:
不再需要枚举的类型、计数器名不在需要写properties文件,调用的方法在context中都封装了。
2、hadoop权威指南中写了统计百分比值,代码改改就能实现,就是一个总数除以错误数然后百分比的结果。
3、有疑问或是写的不对的地方,欢迎发邮件到dajuezhao@gmail.com
发表评论
-
Hadoop的基准测试工具使用(部分转载)
2011-01-21 11:58 1611一、背景由于以前没有 ... -
分布式集群中的硬件选择
2011-01-21 11:58 1040一、背景最近2个月时间一直在一个阴暗的地下室的角落里工作,主要 ... -
Map/Reduce的内存使用设置
2011-01-21 11:57 1651一、背景今天采用10台 ... -
Hadoop开发常用的InputFormat和OutputFormat(转)
2011-01-21 11:55 1489Hadoop中的Map Reduce框架依 ... -
SecondaryNamenode应用摘记
2010-11-04 15:54 1069一、环境 Hadoop 0.20.2、JDK 1.6、 ... -
Zookeeper分布式安装手册
2010-10-27 09:41 1333一、安装准备1、下载zookeeper-3.3.1,地址:ht ... -
Hadoop分布式安装
2010-10-27 09:41 1014一、安装准备1、下载hadoop 0.20.2,地址:http ... -
Map/Reduce使用杂记
2010-10-27 09:40 967一、硬件环境1、CPU:Intel(R) Core(TM)2 ... -
Map/Reduce中的Partiotioner使用
2010-10-27 09:39 919一、环境1、hadoop 0.20.22 ... -
Map/Reduce中的Combiner的使用
2010-10-27 09:38 1197一、作用1、combiner最基本是实现本地key的聚合,对m ... -
Hadoop中DBInputFormat和DBOutputFormat使用
2010-10-27 09:38 2443一、背景 为了方便MapReduce直接访问关系型数据 ... -
Hadoop的MultipleOutputFormat使用
2010-10-27 09:37 1698一、背景 Hadoop的MapReduce中多文件输出默 ... -
Map/Reduce中公平调度器配置
2010-10-27 09:37 1546一、背景一般来说,JOB ... -
无法启动Datanode的问题
2010-10-27 09:37 2398一、背景早上由于误删namenode上的hadoop文件夹,在 ... -
Map/Reduce的GroupingComparator排序简述
2010-10-27 09:36 1349一、背景排序对于MR来说是个核心内容,如何做好排序十分的重要, ... -
Map/Reduce中分区和分组的问题
2010-10-27 09:35 1140一、为什么写分区和分组在排序中的作用是不一样的,今天早上看书, ... -
关于Map和Reduce最大的并发数设置
2010-10-27 09:34 1249一、环境1、hadoop 0.20.22、操作系统 Linux ... -
关于集群数据负载均衡
2010-10-27 09:33 897一、环境1、hadoop 0.20.22、操作系统 Linux ... -
Map/Reduce执行流程简述
2010-10-27 09:33 989一、背景最近总在弄MR的东西,所以写点关于这个方面的内容,总结 ... -
Hadoop集群中关于SSH认证权限的问题
2010-10-27 09:32 899今天回北京了,想把在外地做的集群移植回来,需要修改ip地址和一 ...
相关推荐
开发人员可以自定义计数器组,并在Mapper或Reducer中增加计数器实例来跟踪特定的事件或指标。例如,可以创建一个计数器来追踪处理的行数,或者另一个计数器来记录遇到的错误。这些计数器的值可以在JobTracker或YARN...
这个项目可能包含一个或多个示例,展示了如何在Mapper和Reducer中创建和更新自定义计数器,以便监控任务的执行情况。 首先,我们需要了解Hadoop MapReduce的基本工作流程。MapReduce将大数据处理任务拆分为两个主要...
计数器分为两类:Hadoop内置的计数器和自定义计数器。 内置计数器主要由Hadoop框架提供,例如Map任务和Reduce任务的数量、输入和输出的数据量等。这些计数器在MapReduce作业的执行过程中自动更新,并在日志中打印...
而自定义计数器则是由开发者在编写MapReduce程序时设定的,用以统计用户自定义事件的发生次数,比如无效记录的计数、记录某些特殊情况的发生等。计数器的存在使得开发者可以进行质量控制、应用级别的统计和问题定位...
在这个实验中,可能会使用自定义计数器来记录不同年份的气温记录数量,或者处理的行数等,以便于监控和分析程序的运行情况。 3. **MapReduce参数传递**:在配置MapReduce作业时,我们可能需要设置一些特定的参数,...
- **用户定义Java计数器**:允许用户在MapReduce程序中自定义计数器,以便更好地监控和调试程序。 ##### 计数器的应用场景 - **质量控制**:通过监控计数器可以及时发现数据质量问题,比如无效记录的比例过高。 - ...
例如,Hadoop MapReduce框架中,开发者可以定义自定义的计数器来记录处理过程中的关键指标,这有助于分析任务性能和调试。Apache Spark等流处理系统也有类似的概念,允许用户创建和使用计数器来跟踪实时处理的数据量...
- **计数器**:提供自动计数器和用户自定义计数器,用于统计任务执行情况。 - **任务分割**:自动将大任务拆分成小任务,以便并行处理。 #### 管理功能 - **任务监控**:提供了可视化界面来监控任务执行状态。 - **...
从Hadoop URL中读取数据 通过FileSystem API读取数据 写入数据 目录 查询文件系统 删除数据 数据流 文件读取剖析 文件写入剖析 一致模型 通过 distcp并行拷贝 保持 HDFS 集群的均衡 ...
从Hadoop URL中读取数据 通过FileSystem API读取数据 写入数据 目录 查询文件系统 删除数据 数据流 文件读取剖析 文件写入剖析 一致模型 通过 distcp并行拷贝 保持 HDFS 集群的均衡 Hadoop的归档文件 使用Hadoop归档...
Hadoop 培训课程(4)MapReduce_2 标准和自定义计数器* Combiner和Partitioner编程** 自定义排序和分组编程** 常见的MapReduce算法** ---------------------------加深拓展---------------------- 常见大数据处理方法*
- **计数器**:解释了计数器在MapReduce中的作用,以及如何使用它们来监控作业的状态。 - **排序**:讨论了如何在MapReduce中实现排序操作。 - **联接**:介绍了MapReduce中实现数据联接的方法。 - **次要数据的分布...
高级MapReduce技术包括自定义输入/输出格式、优化数据分区、使用组合器减少网络传输、实现计数器监控程序性能、利用缓存提高效率等。通过这些高级技术,可以更灵活地控制数据流和计算过程,提高处理效率。 ### 管理...
- **Counters**:Counters 用于统计作业过程中的各种计数器信息,如处理的记录数量等。 - **DistributedCache**:DistributedCache 可以在作业运行时将一些辅助文件分发到各个 TaskTracker 上,便于 Mapper 或 ...
- **安装与运行**:指导如何安装Pig并在Hadoop环境中运行。 - **实践技巧**:提供了一些实用的Pig脚本编写技巧。 #### 十一、HBase简介 - **概述**:HBase是一个基于Hadoop的分布式列式存储系统。 - **安装与使用**...
- **作业**:Hadoop中的任务单元。 - **集群规模**:根据需求调整集群的大小。 - **网络拓扑**:优化网络架构以提升性能。 - **环境设置**:配置Hadoop运行环境。 - **守护进程的关键属性**:如NameNode、DataNode和...
- **高级接口**:允许用户自定义更多的功能,如JobConf用于获取作业配置、Counter允许用户定义计数器等。 #### 七、HCE实例——Word Count 以Word Count为例,展示了如何使用HCE进行MapReduce任务的编写和执行。...
这个条目可能是指用户可以运行的任何自定义类,通常用于扩展Hadoop的功能。 **命令格式**: ``` hadoop CLASSNAME [ARGUMENTS...] ``` **示例**: ``` hadoop ...