- 浏览: 59785 次
- 性别:
- 来自: 北京
最新评论
-
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 1565一、背景由于以前没有 ... -
分布式集群中的硬件选择
2011-01-21 11:58 1003一、背景最近2个月时间一直在一个阴暗的地下室的角落里工作,主要 ... -
Map/Reduce的内存使用设置
2011-01-21 11:57 1608一、背景今天采用10台 ... -
Hadoop开发常用的InputFormat和OutputFormat(转)
2011-01-21 11:55 1458Hadoop中的Map Reduce框架依 ... -
SecondaryNamenode应用摘记
2010-11-04 15:54 1030一、环境 Hadoop 0.20.2、JDK 1.6、 ... -
Zookeeper分布式安装手册
2010-10-27 09:41 1296一、安装准备1、下载zookeeper-3.3.1,地址:ht ... -
Hadoop分布式安装
2010-10-27 09:41 983一、安装准备1、下载hadoop 0.20.2,地址:http ... -
Map/Reduce使用杂记
2010-10-27 09:40 908一、硬件环境1、CPU:Intel(R) Core(TM)2 ... -
Map/Reduce中的Partiotioner使用
2010-10-27 09:39 886一、环境1、hadoop 0.20.22 ... -
Map/Reduce中的Combiner的使用
2010-10-27 09:38 1156一、作用1、combiner最基本是实现本地key的聚合,对m ... -
Hadoop中DBInputFormat和DBOutputFormat使用
2010-10-27 09:38 2401一、背景 为了方便MapReduce直接访问关系型数据 ... -
Hadoop的MultipleOutputFormat使用
2010-10-27 09:37 1650一、背景 Hadoop的MapReduce中多文件输出默 ... -
Map/Reduce中公平调度器配置
2010-10-27 09:37 1507一、背景一般来说,JOB ... -
无法启动Datanode的问题
2010-10-27 09:37 2367一、背景早上由于误删namenode上的hadoop文件夹,在 ... -
Map/Reduce的GroupingComparator排序简述
2010-10-27 09:36 1309一、背景排序对于MR来说是个核心内容,如何做好排序十分的重要, ... -
Map/Reduce中分区和分组的问题
2010-10-27 09:35 1103一、为什么写分区和分组在排序中的作用是不一样的,今天早上看书, ... -
关于Map和Reduce最大的并发数设置
2010-10-27 09:34 1216一、环境1、hadoop 0.20.22、操作系统 Linux ... -
关于集群数据负载均衡
2010-10-27 09:33 857一、环境1、hadoop 0.20.22、操作系统 Linux ... -
Map/Reduce执行流程简述
2010-10-27 09:33 957一、背景最近总在弄MR的东西,所以写点关于这个方面的内容,总结 ... -
Hadoop集群中关于SSH认证权限的问题
2010-10-27 09:32 868今天回北京了,想把在外地做的集群移植回来,需要修改ip地址和一 ...
相关推荐
Hadoop 自定义 Partitioner 实现
hadoop实现计数器,利用mapreduce进行排序,同时可以实时跟踪整个过程以及每个节点的参与情况
博客Hadoop机架感知配置自主实现的jar包 http://blog.csdn.net/lemonZhaoTao/article/details/70991813
Hadoop 自定义 Partitioner 实现
Hadoop 自定义 Partitioner 源代码
hadoop自定义类型编程
05-mr程序中自定义分组的实现.avi 06-shuffle机制.avi 07-mr程序的组件全貌.avi 08-textinputformat对切片规划的源码分析.avi 09-倒排索引的mr实现.avi 10-多个job在同一个main方法中提交.avi 第五天 hadoop2...
第一天 hadoop的基本概念 伪分布式hadoop集群安装 hdfs mapreduce 演示 01-hadoop职位需求状况.avi 02-hadoop课程安排.avi 03-hadoop应用场景.avi 04-hadoop对海量数据处理的... 05-mr程序中自定义分组的实现.avi
java map源码
NULL 博文链接:https://201201314056.iteye.com/blog/2193117
今天小编就为大家分享一篇关于Hadoop计数器的应用以及数据清洗,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
在windows环境下开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\hadoop-common-2.7.3-bin-master,并在Path追加%HADOOP_HOME%\bin,有可能出现如下错误: org.apache.hadoop.io.nativeio.NativeIO$Windows....
hadoop 中文手册 Hadoop文档 下面的文档是一些概念介绍和操作教程,可帮助你开始使用Hadoop。如果遇到了问题,你可以向邮件列表求助或者浏览一下存档邮件。 Hadoop快速入门 Hadoop集群搭建 Hadoop分布式文件系统...
hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文...
Hadoop 2.7.1 中文文档 Hadoop 2.7.1 中文文档 Hadoop 2.7.1 中文文档
Hadoop中的Flume安装指南,不会的童鞋可以下载哦,有助于学习
Hadoop 中的调度
可以自定义安装jdk和hadoop(格式为*tar.gz) 注意事项 1、安装完jdk和hadoop请手动source /etc/profile 刷新环境变量 2测试脚本环境为centOS6,其他操作系统会有些配置不一样,请手动调整 资源描述: 安装Linux教程...
在 Hadoop 中,MapReduce 底层的分布式文件系统是独文模块,用户可按照约定 的一套接口实现自己的分布式文件系统,然后经过简单的配置后,存储在该文件 系统上的数据便可以被 MapReduce 处理。 官网下载速度非常缓慢...