MapReduce 中的计数器

计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计。计数器还可辅助诊断系统故障。如果需要将日志信息传输到 map 或 reduce 任务, 更好的方法通常是看能否用一个计数器值来记录某一特定事件的发生。对于大型分布式作业而言,使用计数器更为方便。除了因为获取计数器值比输出日志更方便,还有根据计数器值统计特定事件的发生次数要比分析一堆日志文件容易得多。

hadoop内置计数器列表

MapReduce任务
计数器
org.apache.hadoop.mapreduce.TaskCounter
文件系统计数器 org.apache.hadoop.mapreduce.FileSystemCounter
FileInputFormat
计数器
org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter
FileOutputFormat
计数器
org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter
作业计数器 org.apache.hadoop.mapreduce.JobCounter

所有的这些都是MapReduce的计数器的功能,既然MapReduce当中有计数器的功能,我们如何实现自己的计数器???

需求:以上面排序以及序列化为案例,统计map接收到的数据记录条数

第一种方式

第一种方式定义计数器,通过context上下文对象可以获取我们的计数器,进行记录通过context上下文对象,在map端使用计数器进行统计

public class SortMapper extends
Mapper<LongWritable,Text,PairWritable,IntWritable> {private PairWritable mapOutKey = new PairWritable();private IntWritable mapOutValue = new IntWritable();@Overridepublic void map(LongWritable key, Text value, Context context) throwsIOException, InterruptedException {//自定义我们的计数器,这里实现了统计map数据数据的条数Counter counter = context.getCounter("MR_COUNT","MapRecordCounter");counter.increment(1L);String lineValue = value.toString();String[] strs = lineValue.split("\t");//设置组合key和value ==> <(key,value),value>mapOutKey.set(strs[0], Integer.valueOf(strs[1]));mapOutValue.set(Integer.valueOf(strs[1]));context.write(mapOutKey, mapOutValue);}}

运行程序之后就可以看到我们自定义的计数器在map阶段读取了七条数据

第二种方式

通过enum枚举类型来定义计数器

统计reduce端数据的输入的key有多少个,对应的value有多少个

public class SortReducer extendsReducer<PairWritable,IntWritable,Text,IntWritable> {private Text outPutKey = new Text();public static enum Counter{REDUCE_INPUT_RECORDS, REDUCE_INPUT_VAL_NUMS,}@Overridepublic void reduce(PairWritable key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {     context.getCounter(Counter.REDUCE_INPUT_RECORDS).increment(1L);//迭代输出for(IntWritable value : values) {context.getCounter(Counter.REDUCE_INPUT_VAL_NUMS).increment(1L);outPutKey.set(key.getFirst());context.write(outPutKey, value);        }}}

MapReduce-计数器相关推荐

  1. MapReduce计数器

    原文链接:http://itfish.net/article/61067.html 1.MapReduce计数器是什么? 计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们可以在程 ...

  2. MapReduce计数器--详解

    1.MapReduce计数器是什么? 计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况. 2.MapReduce计数器能 ...

  3. MapReduce计数器实验

    一.实验目的 通过实验掌握基本的MapReduce编程方法: 掌握用MapReduce解决一些常见的数据处理问题,编写计数器程序. 二.实验平台 操作系统:Linux(建议CentOS6.5): Ha ...

  4. MapReduce 计数器

    1. MapReduce 计数器 1.1 计数器是什么 计数器一般用来记录 job 执行进度和状态信息. 如果自己手动实现计数,需要考虑将多个线程的计算结果合并,编码过于麻烦,通常使用 MapRedu ...

  5. Hadoop教程(四):理解MapReduce、MapReduce计数器和连接、MapReduce Hadoop程序连接数据

    本教程中的代码分为 3 个部分: 解释 SalesMapper 类 解释 SalesCountryReducer 类 解释 SalesCountryDriver 类 SalesMapper类的说明 在 ...

  6. MapReduce 计数器简介

    2019独角兽企业重金招聘Python工程师标准>>> 1.计数器简介 在许多情况下,一个用户需要了解待分析的数据,尽管这并非所要执行的分析任务 的核心内容.以统计数据集中无效记录数 ...

  7. MapReduce 计数器简介(转载自:http://www.tuicool.com/articles/qqyIBr)

    1.计数器 简介 在许多情况下,一个用户需要了解待分析的数据,尽管这并非所要执行的分析任务 的核心内容.以统计数据集中无效记录数目的任务为例,如果发现无效记录的比例 相当高,那么就需要认真思考为何存在 ...

  8. Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)

    3.3. MapReduce与YARN 3.3.1 YARN概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运 ...

  9. Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)...

    3.3. MapReduce与YARN 3.3.1 YARN概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运 ...

  10. 大数据【四】MapReduce(单词计数;二次排序;计数器;join;分布式缓存)

       前言: 根据前面的几篇博客学习,现在可以进行MapReduce学习了.本篇博客首先阐述了MapReduce的概念及使用原理,其次直接从五个实验中实践学习(单词计数,二次排序,计数器,join,分 ...

最新文章

  1. 可以用于回归分类的总结
  2. python就业前景分析-Python就业前景如何?老男孩Python培训好吗?
  3. lenovo 一键恢复6.0 NOVO下密码遗忘的解决方案
  4. HTML form的一些属性(第一版)
  5. java rsa算法_求RSA算法JAVA实现源代码(带界面的)
  6. linux i2c adapter 增加设备_「正点原子Linux连载」第六十二章Linux SPI驱动实验(一)...
  7. 使用 Zabbix 监控 Jenkins
  8. luhn算法java_Java信用卡验证– Java中的Luhn算法
  9. Java第二节课总结
  10. 如何在 Mac 上修复丢失的鼠标光标?
  11. C++ multiset 相同元素
  12. 八十九、Java内置函数(常用函数)
  13. 常用中国姓氏日文平假名对照表
  14. 吃吃川味水煮鱼 体验别种川菜
  15. cygwin64安装wget和apt-cyg
  16. P2E引发热潮,从代币经济学、元宇宙和风投等角度看链游行业将走向何方?
  17. Hackshanghai 黑马
  18. 产品经理与项目经理-从PMP到NPDP
  19. 2020 - 2021 年 Web 前端最新导航 - 前端学习资源分享前端面试资源汇总
  20. 逻辑左移、逻辑右移、算术左移、算术右移区别

热门文章

  1. js实现无缝循环滚动
  2. [转载]用 grub2 启动 clover.iso 来启动 OS X
  3. 访问IIS时,名称以无效字符开头。。。解决方案
  4. RVDS4.0上开发cortex A8 NEON程序
  5. 有关 alter tablespace begin backup
  6. 通向架构师的道路(第一天)之Apache整合Tomcat
  7. tracert和traceroute使用
  8. Collections练习之按照字符串长度进行排序
  9. hdu1006 Tick and TIck
  10. hdu 2825 Wireless Password AC自动机+状态DP