mapreduce队列设置(MapReduce中的计数器)

资讯 | 2022-12-31| 3

接着 Hadoop之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队列设置(MapReduce中的计数器)插图

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

需求:以分区代码为案例,统计map接收到的数据记录条数

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

典亮百年编者按:胸怀千秋伟业,恰是百年风华一百年来,中国共产党始终牢记初心和使命,带领中国人民历经艰难险阻,取得了一个又一个胜利,深刻改变了近代以来中华民族发展的方向和进程,深刻改变了中国人民和中华民族的前途。

通过context上下文对象,在map端使用计数器进行统计。

增加PartitionMapper.java

import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Counter; import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException; public class PartitionMapper extends Mapper<LongWritable, Text,Text, NullWritable> { /** * map方法将K1和V1转为K2和V2 */ @Override protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, NullWritable>.Context context) throws IOException, InterruptedException { Counter counter = context.getCounter("MR_COUNT", "MyRecordCounter"); counter.increment(1L); context.write(value,NullWritable.get()); } }

同时在主类中增加设置:

job.setMapperClass(PartitionMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(NullWritable.class);

如下图所示:

mapreduce队列设置(MapReduce中的计数器)插图1

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

mapreduce队列设置(MapReduce中的计数器)插图2

第二种方式,通过enum枚举类型来定义计数器,统计reduce端数据的输入的key有多少个

增加PartitionerReducer.java

import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; import java.io.IOException; public class PartitionerReducer extends Reducer<Text, NullWritable,Text,NullWritable> { public static enum Counter{ MY_REDUCE_INPUT_RECORDS,MY_REDUCE_INPUT_BYTES } @Override protected void reduce(Text key, Iterable<NullWritable> values, Reducer<Text, NullWritable, Text, NullWritable>.Context context) throws IOException, InterruptedException { context.getCounter(Counter.MY_REDUCE_INPUT_RECORDS).increment(1L); context.write(key, NullWritable.get()); } }

同时在主类中增加设置:

job.setReducerClass(PartitionerReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(NullWritable.class);

如下图所示:

执行效果如下:

,

今日南泥湾来源:人民日报海外版图①:2020年10月23日,南泥湾千亩水稻开始收割新华社记者陶明摄图②:南泥湾镇南泥湾村村民侯秀珍在窑洞里热情迎接客人本报记者潘旭涛摄图③:南泥湾党徽广场本报记者张一琪摄图④:初。

相关推荐

空压机是如何选型的呢(空压机型号选不对)

空压机是如何选型的呢(空压机型号选不对)

空压机型号选不对购买空气压缩机之前,一定要先了解空压机型号每个空压机厂家的型号均不一样,各家都有相关的命名规则,空压机型号选不对,不仅浪费钱还浪费时间,小编带您了解一下德耐尔的空压机型号一般空压机厂家会以自己公司的英。

资讯 1 2023-02-08
windows电脑如何美化桌面(电脑桌面美化的设置方法)

windows电脑如何美化桌面(电脑桌面美化的设置方法)

电脑桌面美化的设置方法本节小编为大家分享如何让自己的电脑桌面更加美观,更加精致下面是具体的设置方法一.在电脑桌面上点击右键,选择“个性化”二.在个性化设置窗口中点击“窗口颜色”三.在这里可以选择一种自己喜欢的颜色,或者与电。

资讯 1 2023-02-08
折叠屏手机使用三年后的效果(从实际体验出发)

折叠屏手机使用三年后的效果(从实际体验出发)

从实际体验出发年底折叠屏手机大火,聚焦了很多关注的目光,厂商们除了针对折叠屏加持专属体验之外,还在内外屏的设计上有着不同的理解和诠释有的厂商注重内屏打造,认为外屏能满足日常接打电话回复消息使用即可,有的厂商则恰恰相。

资讯 1 2023-02-08
手机的内屏和外屏的区别在哪(手机内屏和外屏是如何区分的)

手机的内屏和外屏的区别在哪(手机内屏和外屏是如何区分的)

手机内屏和外屏是如何区分的我是在北京做手机维修的在日常维修中,手机屏幕维修占据了绝大多数(尤其iPhone屏幕维修),屏幕坏了,我们的客服小姑娘通常会问客户是内屏坏了还是外屏坏了,有些手机用户并不怎么了解什么是手机的外屏和内屏。

资讯 1 2023-02-08
苹果手机中间的键是什么键(你知道苹果手机上)

苹果手机中间的键是什么键(你知道苹果手机上)

你知道苹果手机上相信很多用户平时都不会用到「*」键和「#」键,也会自然而然忽视了这两个按键的作用,那么这两个键到底有什么作用呢?其实这两个按键的作用比我们想象的要大得多,只是我们平时没有发现而已,那么现在我们一起来了。

资讯 1 2023-02-08
iphone这几个功能你不会不知道吧(iPhone手机很多用户都不知道的手机内部功能)

iphone这几个功能你不会不知道吧(iPhone手机很多用户都不知道的手机内部功能)

iPhone手机很多用户都不知道的手机内部功能iPhone手机隐藏的小功能有很多,每个数字及字母都能透露出很多信息今天小编就教大家如果利用拨号键盘查询到更多的信息查询手机信号输入*3001#12345#*,就可以运行手机内置的FieldTest、。

资讯 1 2023-02-08
iphone手机关掉这四个功能(在iPhone手机上按下这几个键)

iphone手机关掉这四个功能(在iPhone手机上按下这几个键)

在iPhone手机上按下这几个键手机对于我们而言再熟悉不过了,每天都要使用但是,你真的对你的手机了如指掌么?其实每部手机都会有一些内置的代码,iPhone手机也不例外,按下这些键会有意想不到的小功能,你一定没用过!1.查询IMEI号。

资讯 1 2023-02-08
魅族18官网发布信息(魅族18系列微博小尾巴无型号)

魅族18官网发布信息(魅族18系列微博小尾巴无型号)

魅族18系列微博小尾巴无型号魅族18系列发布后,首批拿到的用户包括小白自己在发微博过程中发现一个问题:魅族18/Pro微博小尾巴不显示机型的型号,而是显示「来自Flyme」对此魅族官方回应表示魅族18系列用户之所以微博小尾巴没有。

资讯 1 2023-02-08
曲屏加刘海屏的手机(曲屏手机用腻了)

曲屏加刘海屏的手机(曲屏手机用腻了)

曲屏手机用腻了不难发现,如今很多安卓旗舰手机都采用了“曲面屏”的设计,而且越是“Pro”的版本,采用曲面屏设计的越多虽说曲面屏确实能够带来出色的视觉效果,以及更随意可靠的人机交互逻辑,但这种被“掰弯”了的屏幕也存在。

资讯 1 2023-02-08
webrtc官方网站(使用SimpleWebRTC构建)

webrtc官方网站(使用SimpleWebRTC构建)

使用SimpleWebRTC构建在正式讲解之前还是先提供项目下载地址:https://url25.ctfile.com/f/34512525-576982564-42a010?p=7054(访问密码:7054)什么是SimpleWe。

资讯 1 2023-02-08
浪潮智能计算(浪潮AI服务器夺冠MLPerf)

浪潮智能计算(浪潮AI服务器夺冠MLPerf)

浪潮AI服务器夺冠MLPerf7项冠军,这是浪潮信息在MLPerf™V1.1AI训练评测中交出的最新成绩单(来源:资料图)在MLPerf™2021年度的4次性能测试中,浪潮AI服务器获得44项第一其中,在数据中心AI推理场景的总3。

资讯 1 2023-02-08
英特尔低功耗版系列介绍(英特尔至强铂金8380服务器芯片在Linux)

英特尔低功耗版系列介绍(英特尔至强铂金8380服务器芯片在Linux)

英特尔至强铂金8380服务器芯片在Linux国外科技媒体Phoronix的编辑MichaelLarabel近日在窗口合并期即将结束的Linux6.0Git上,对英特尔至强铂金8380芯片进行了测试此外文章中还提及,AMD的霄龙(EPYC)芯片同。

资讯 1 2023-02-08