05-MapReduce分布式编程优质课件.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MapReduce分布式编程MapReduce distributed programming主讲人目录MapReduce简介词频统计编程实例MapReduce Shuffle 过程开发MapReduce的性能优化YARN数据处理框架MapReduce实战:绘制频度分布MapReduce简介1MapReduce简介MapReduce是一个分布式计算的编程框架,用于大规模数据集的并行处理。MapReduce将一个数据处理过程拆分为Map和Reduce两部分:Map表示映射,负责数据的过滤、分发;Reduce表示规约,负责数据的计算、归并。MapReduce把对数据集的大规模操作分发到计算节点,计算节点会周期性地返回其工作的最新状态和结果。如果计算节点沉默时间超过预设时间,主节点则默认该节点为宕机状态,把已分配给该节点的数据分发到其他节点重新计算,从而实现数据处理任务的自动调度。MapReduce分布式编程Hadoop支持多种语言进行MapReduce分布式编程,包括Java、Ruby、Python和C++等。采用Java语言进行的MapRedcue分布式编程流程如右图所示,可以分成六个流程。Map 程序和Reduce程序的输入和输出都是以键值对的形式出现的,map( )方法的输出和reduce( )方法的输入的键值对格式必须一致,MapReduce的调度程序完成Map程序和Reduce程序间的数据传递。MapReduce分布式编程流程词频统计编程实例2词频统计编程实例在Hadoop集群运行一个WordCount程序来统计输入文件中单词出现的次数(词频)。WordCount程序包含3个部分,分别为:编译一个WordCount.java程序,该程序将在Hadoop集群中运行。把在HDFS中处理的文件进行上传。运行WordCount.java程序并查看结果。WordCount.java程序MapReduce Shuffle过程开发3分拣(Shuffle)过程 通过之前的学习我们知道,Hadoop框架使用Mapper将数据处理成键值对,然后在网络节点间对其进行整理,通过Reducer处理后最终输出。数据整理的中间过程即分拣(Shuffle)过程,主要涉及分区(Partition)、排序(Sort)、合并(Combine)。通过Shuffle过程,可以有效地降低在网络间传输的数据量,提高程序的执行效率。MapReduce数据类型 MapReduce运算将完成的Mapper的计算结果发送给Reducer,Reducer收到任务后进行规约计算。Map任务和Reduce任务多分布在不同的计算节点上,这就要求在网络上传递可序列化的Java对象。对象序列化是指把Java对象转化成字节序列的过程,反序列化是指把字节序列转化成Java对象的过程。Hadoop重新定义了Java中常用的数据类型,如右表所示,并让它们具有序列化的特点。Hadoop定义的MapReduce数据类型与Java基本类型的对照Partitioner负载平衡编程 在Hadoop的MapReduce过程中,Mapper完成数据处理后,会把数据发送到Partitioner,由Partitioner来决定每条记录应该送往哪个Reducer节点。MapReduce默认的Partitioner是HashPartitioner。 getPartition( )的输入参数就是Mapper输出的key和value,然后针对这样的输入,Partitioner先计算key的散列值,然后根据Reducer个数执行取模运算。Sort排序编程 MapReduce默认的Partitioner是HashPartitioner。Mapper的输出结果在写入磁盘前,会进行二次快速排序。首先根据数据所属的Partitioner排序,然后每个Partitioner按key排序。 如果key的类型是用户自定义的类型,并没有默认的比较函数时,就需要自己定义key的比较函数,也就是继承WritableComparator。 通过上述代码我们发现,自定义TextComparator类继承WritableComparator基类,重写了compare( )方法。Combiner减少中间数据编程 通过使用Combiner可以使MapReduce整体性能得到提升。Combiner可以从根本上优化和最小化键值对的数量。因为键值对是通过网络在Mapper和Reducer之间传输的,所以Combiner可以降低网络传输负载。Combiner在词频统计中的使用十分简单,我们并不需要修改之前的词频统计源码,只需在主方法main( )中添加如下代码: job.setCombinerClass(MyReducer.class);即通过job设置Co

文档评论(0)

fetch + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体成都菲琦科技有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510100MA6C6CX39E

1亿VIP精品文档

相关文档