《大数据平台部署与运维》课件-MapReduce计数器的基本原理_第1页
《大数据平台部署与运维》课件-MapReduce计数器的基本原理_第2页
《大数据平台部署与运维》课件-MapReduce计数器的基本原理_第3页
《大数据平台部署与运维》课件-MapReduce计数器的基本原理_第4页
《大数据平台部署与运维》课件-MapReduce计数器的基本原理_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

《大数据平台部署与运维》《大数据平台部署与运维》课程组计数器的基本原理本节重点计数器的基本概念计数器的基本原理MapReduce编程过程对于基于MapReduce编程范式的分布式计算来说,本质上而言,就是在计算数据的交、并、差、聚合、排序等过程。而分布式计算分而治之的思想,让每个节点只计算部分数据,也就是只处理一个分片,那么要想求得某个key对应的全量数据,那就必须把相同key的数据汇集到同一个Reduce任务节点来处理,那么Mapreduce范式定义了一个叫做Shuffle的过程来实现这个效果。Map端sortMap端的输出数据,先写环形缓存区kvbuffer,当环形缓冲区到达一个阀值(可以通过配置文件设置,默认80),便要开始溢写,但溢写之前会有一个sort操作,这个sort操作先把Kvbuffer中的数据按照partition值和key两个关键字来排序,移动的只是索引数据,排序结果是Kvmeta中数据按照partition为单位聚集在一起,同一partition内的按照key有序。spill(溢写)当排序完成,便开始把数据刷到磁盘,刷磁盘的过程以分区为单位,一个分区写完,写下一个分区,分区内数据有序,最终实际上会多次溢写,然后生成多个文件Reduce操作总体过程如下图的红框处:拉取拷贝(fetchcopy)Reduce任务通过向各个Map任务拉取对应分片。这个过程都是以Http协议完成,每个Map节点都会启动一个常驻的HTTPserver服务,Reduce节点会请求这个HttpServer拉取数据,这个过程完全通过网络传输,所以是一个非常重量级的操作。合并排序Reduce端,拉取到各个Map节点对应分片的数据之后,会进行再次排序,排序完成,结果丢给Reduce函数进行计算。Hadoop

MapReduce——Combiner组件如单词统计问题,若有1亿个单词,就会传输1亿个键值对,合理的使用Combiner可以减少键值对的网络传输,提示效率。Combiner发生在map端,通常与reduce有相同的实现Combiner一般适用于求和,求最大值或最小值,不适用与求平均值声明Combiner类的时候必须继承ReducerHadoop

MapReduce——Combiner组件Hadoop

MapReduce–Combiner Mapper-outReducer-inCombinerKeyValue0Thisismy10Whatisthat21AndWhatifKeyValueThis1Is1My1What1Is1That1……KeyValueThis1Is2My1What1And1That1……Hadoop

MapReduce–Combiner KeyValue0Thisismy10Whatisthat21AndWhatifKeyValueThis1Is1My1What1……KeyValueThis1Is2My1What1……KeyValue0IloveHadoop10IfIKeyValueI1love1Hadoop1If1i1KeyValueI2Hadoop1If1i1KeyValueThis1Hadoop1If2I2input0input0map0map1combine0combine1reduce0统计用户每天登录该网站次数

publicclassLogCountCombinerextendsReducer<MemberLogTime,IntWritable,MemberLogTime,IntWritable>{ @Override protectedvoidreduce(MemberLogTimekey,Iterable<IntWritable>value, Reducer<MemberLogTime,IntWritable,MemberLogTime,IntWritable>.Contextcontext) throwsIOException,InterruptedException{ intsum=0; for(IntWritableval:value){ sum+=val.get(); } context.write(key,newIntWritable(sum)); }}Hadoop

MapReduce–——分区器(Partitioner)

分区器决定键值对发送的reducer地址Hadoop

MapReduce–——分区器(Partitioner)

1.Mapper输出键值对2.每个键值对被发送到Partitioner中3.Partitioner的getPartition方法返回0~N-1对应reducer的id<key1,value><key2,value><key3,value><key8,value>Hadoop

MapReduce–分区器(Partitioner)

Hadoop

MapReduce–——分区器(Partitioner)

计数器属性名MapReduce任务计数器org.apache.hadoop.mapreduce.TaskCounter文件系统计数器org.apache.hadoop.mapreduce.FileSystemCounter输入文件计数器org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter输出文件计数器org.apache.hadoop.mapreduce.lib.input.FileOutputFormatCounter作业计数器org.apache.hadoop.mapreduce.JobCounterHadoop

MapReduce——内置计数器Hadoop

MapReduce——自定义计数器自定义Counter有两种方式,第一种是通过Java枚举(enum)类型来定义,一个作业可以定义的枚举类型数量不限,各个枚举类型所包含的字段数量也不限。枚举类型的名称即为组的名称,枚举类型的字段就是计数器的名称。另外一种自定义Counter的方式是动态计数器。除了使用getCounter方法获取枚举中值的方式外,Context类中还有一个重载的方法getCount(StringgroupName,StringcountName)能够

温馨提示

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

评论

0/150

提交评论