肥宅钓鱼网
当前位置: 首页 钓鱼百科

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

时间:2023-08-20 作者: 小编 阅读量: 2 栏目名: 钓鱼百科

介绍计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计。计数器还可辅助诊断系统故障。如果需要将日志信息传输到map或reduce任务,更好的方法通常是看能否用一个计数器值来记录某一特定事件的发生。

接着 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当中有计数器的功能,我们如何实现自己的计数器?

需求:以分区代码为案例,统计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 PartitionMapperextends Mapper<LongWritable, Text,Text, NullWritable> {/*** map方法将K1和V1转为K2和V2*/@Overrideprotected 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);

如下图所示:

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

第二种方式,通过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}@Overrideprotected 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);

如下图所示:

执行效果如下:

,
    推荐阅读
  • led芯片龙头(周期低迷期国星光电)

    而有些企业,譬如昨夜产业电影大片主角——国星光电东山精密,则早已联手谱写了精彩、震惊业界的剧情。本次事件值得关注三个重点Part1最强对手变盟友RGBLED封装是两家LED板块最核心业务,体量也相当,虽然整体业务规划存在错位和差异,但此前仍然是主要的竞争对手。此外,两家头部公司合作必然对下游客户、上游供应商策略造成影响。

  • 苹果手机扩容会有危害吗(苹果手机扩容会不会对手机有影响)

    苹果手机扩容会有危害吗,苹果手机扩容会有危害,危害如下:1、苹果官方不提供扩容服务,只能找第三方店进行扩容,而且扩容后苹果官方就不会为你保修了,所以手机还在保修期内就一定不要去扩容;2、由于内存和原装内存不同,换过以后手机读写速度变慢;

  • 收入分为主营业务和其他业务收入(其他业务收入和营业外收入的区别)

    追到手后,结婚成家,柴米油盐,甜言蜜语不管用了,每月工资必须上缴,这就是收付实现制。但是如果反正来,那很有可能就会竹篮打水一场空,用收付实现制去追求女生,很有可能遇到拜金女,人财两空。用权责发生制来过日子,两个人走不下去只是迟早的事,研究表明:财政大权在妻子手里,夫妻生活更和谐。

  • 90平方房子装修要多少钱(90平方房子装修要多少钱呢)

    通常吸顶灯在80到100元左右,造型灯在200元左右。装修费用:1000元2、地板报价橱柜必不可少,在保证质量的基础下,价格合理*关键,预算3000元左右。选购时,在价位上要注意有所区分。建议选择使用方便的材料。水路用PPR管,电路PVC管,有明暗线之分,明线1米20元左右,暗线1米30元左右。不论多大房间,水电改造费用弹性大。装修费用:4500元以内7、卫浴报价卫浴产品不追求豪华与*,实用才是王道。

  • 肉末炒甜椒家常做法(甜椒这么炒脆嫩爽口)

    甜椒这么炒脆嫩爽口​甜椒因为它的清脆口感让人百吃不厌,是我家的常备蔬菜每次去菜市都会买上几个放冰箱几天也不会坏甜椒颜色亮丽,非常适于配菜,不管是拌菜,炒菜,加半个甜椒在里面,食物的味道和颜值瞬间提升几个档次当然,作为主。

  • 南宁有4价宫颈癌疫苗吗(首批四价宫颈癌疫苗来南宁了)

    首批四价宫颈癌疫苗来南宁了今年8月份,二价宫颈癌疫苗在南宁开打,该疫苗适宜9~25岁的女性接种,很多女性因超龄而不能注射现在又有好消息传来:本月23日,四价宫颈癌疫苗将正式在南宁开打,20-45岁之间女性均可接种四价疫苗!因首。

  • 命运交响曲听后感(命运交响曲听后感作文)

    命运交响曲听后感贝多芬是用心来写整个世界,亦用音乐来演绎整个世界。世界上有了音乐才多姿多彩。《命运交响曲》表达的贝多芬对生命的刚毅、挑战、坚强、不屈服于命运。告诉我们不要因为生活的不公平而放弃希望,生活需要希望长相依,人生需要理想来相伴,我们要勇于追求理想,勇于挑战命运的长征。生命是我们自己的,我们要对自己的生命有责任、有义务。我们应该让生命发出本该属于生命自己的光芒。

  • 定时插座如何使用 定时插座用法

    比如你想给手机充电,从晚上11点充到早上5点,你就将23到5之间外面的拨片全部按下去。

  • 混合气体分子数怎么看(混合气体的电子数)

    因为两种或多种混合气体,最好列二元二次方程。然后质量除以各自摩尔质量就算出各自物质的量。再用每摩尔换算成粒子数,分子还要乘原子数,最后两结果相加。

  • 人去世前掉眼泪什么原因(病人死前会流眼泪)

    根据民间以及佛教的说法,人去世的过程就是一个“灵魂出窍”的过程,这个过程漫长而且痛苦,因此才会有眼泪流出。器官退化,泪腺已经不受人体的自主控制,所以就会流下眼泪。所以,临床前流泪,是人体器官即将停止的前奏。多数病人都是在夜间去世,这与人的生物钟相关。也有部分人表示,他们能够感到自己的意识或者说灵魂出窍,仿佛看到前方有一道光,自己在不由自主奔向那里。