大数据实验指导手册7-mapreduce计数器_第1页
大数据实验指导手册7-mapreduce计数器_第2页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验 MapReduce实验:计数MapReduceMapReduceMapReduce版本计数器程序,并能执行job的执行进度和状态的。它的作用可以理解为日志。我们可以在MapReduce计数器(Counter)MapReduceJob运行MapReduce性能调优很有帮助,MapReduce性能优化的评估大部分都是基于这些Counter的数值表现出来的。在许多情况下,一个用户需要了解待分析的数据,尽管这并非所要执行的分析任务的内容。以统计数据集中无效记录数目的任务为例,如果发现无效记录的比例相当高,那么就需要认真思考为何存在如此多无效记录。是所采用的检测程序存在缺陷,还是数据集质量确实很低,包含大量无效记录?如果确定是数据集的质量问题,则可能需要扩大数据集的规模,以增大有效记录的比例,从而进行有意义的分析。计数器是一种收集作业统计信息的有效,用于质量控制或应用级统计。计数器mapreduce常是尝试传输计数器值以监测某一特定是否发生。对于大型分布式作业而言,使用计数器更为方便。首先,获取计数器值比输出日志更方便,其次,根据计数器值统计特定的发生次数要比分析一堆日志文件容易得多。MapReduce自带了许多默认CounterCounterJob结果,如输入的字节数、输出的字节数、Map端输入/输出的字节数和条数、Reduce端的输入/输出的字节数和条数等。下面我们只需了解这些内置计数器,知道计数器组名称(groupName)和计数器名称(counterName,以后使用计数器会查找groupNamecounterName即可。//自定义枚举变量Counter//自定义枚举变量Countercounter=context.getCounter(Enum////自己命名groupName和Countercounter=context.getCounter(StringgroupName,Stringccounter.increment(longincr);//ConfigurationConfigurationconf=newConfiguration();Jobjob=newJob(conf,"MyCounter");Counterscounters=job.getCounters();Countercounter=countersfindCounter(LOG_PROCESSOR_COUNTER.BAD_RECORDS_LONG);//找枚举计数器,假如Enum的变量为BAD_RECORDS_LONGlongvalue=counter.getValue();//获取计数值ConfigurationConfigurationconf=newConfiguration();Jobjob=newJob(conf,"MyCounter");Counterscounters=job.getCounters();Countercounter=counters.findCounter("ErrorCounter","toolong");//假如groupName为counterName为longvaluecounter.getValue();//ConfigurationConfigurationconf=newConfiguration();Jobjob=newJob(conf,"MyCounter");Counterscounters=job.getCounters();//reduce个数的计数器,groupNamecounterName询(前面已经列举有counter=countersfindCounter("org.apachehadoop.mapreduce.JobCounter","TOTALLAUNCHED) 假 org.apachehadoop , TOTALLAUNCHEDlongvalue=counter.getValue();//ConfigurationConfigurationconf=newConfiguration();Jobjob=newJob(conf,"MyCounter");Counterscounters=job.getCounters();for(CounterGroupgroup:counters){for(Countercounter:group){ yName()+":"+counter.getName()+":"+}}MapReduce允许用户编写程序来定义计数器,计数器的值可在mapperreducer中增义的枚举类型数量不限,各个枚举类型所包含的字段数量也不限。枚举类型的名称即为组的名称,枚举类型的字段就是计数器名称。计数器是全局的。换言之,MapReduce框架将跨所有map和reduce这些计数器,并在作业结束时产生一个最终结果。\t241010333packagepackagemrimportimportorg.apachehadoop.conf.Configuration;importorg.apachehadoopfs.Path;importorg.apacheimportorg.apacheimportorg.apachehadoop.mapreduce.Counter;importorg.apachehadoop.mapreduce.Job;importorg.apachehadoop.mapreduce.Mapper;importorg.apachehadoop.mapreduce.lib.input.FileInputFormat;importorg.apachehadoop.mapreduce.lib.output.FileOutputFormat;importorg.apachehadoop.util.GenericOptionsParser;publicclassCounterspublicstaticclassMyCounterMapextendsMapper<LongWritable,Text,Text,Text>{publicstaticCounterct=null;protectedvoidmap(LongWritablekey,Textthrowsjava.io.IOException,InterruptedException{Stringarr_value[]=value.toString().split("\t");if(arr_value.length>3){ctcontext.getCounter("ErrorCounter","toolong");ErrorCounter为组名,toolongct.increment(1);//}elseif(arr_value.length<3)ct=context.getCounter("ErrorCounter","tooshort");}}}publicstaticvoidmain(String[]args)throwsIOException,InterruptedException,ClassNotFoundException{Configurationconf=newConfiguration();String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();if(otherArgs.length!=2){System.err.println("Usage:Counters<in><out>");}Jobjob=newJob(conf,"Counter");FileInputFormat.addInputPath(job,newPath(otherArgs[0]));FileOutputFormat.setOutputPath(job,newPath(otherArgs[1])); pletion(true)?0:1);}}Eclipsemr.Counters。假定打包后的文件名Counters.jarCountersmrHadoop集群提交本应hadoop]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论