《Hadoop权威指南》笔记-关于MapReduce

本笔记主要总结记录2.4节 横向扩展。

本小结简单介绍了Hadoop中MapReduce的执行流程,即对数据流的处理过程,和多map对应多reduce的情况。

数据流

Mapduce主要分成一下五步:
1. MapReeduce作业(job) :客户端需要执行的一个工作单元,包括输入数据、MapReduce程序和配置信息。其主要分为两大类任务:map任务和reduce任务,这些任务运行在集群节点上,由yarn调度。
2. 输入分片(input spilt):简称分片,Hadoop将MapReduce输入数据分成等长小数据块即分片,并为每片构建一个map任务。默认分片大小最好HDFS的一个块的大小,一般为128MB。
3. 在存储输入数据(HDFS中的数据)的节点上运行map任务,因为这样减少不同节点间的数据传输,节约带宽资源,叫做“数据本地优化“(data locality optimization)。如果一个map任务的所有HDFS副本存在的节点都不空闲,则需要其他节点运行该任务,这样是无法实现“数据本地优化“的;
4. map将其输入写入本地硬盘而非HDFS。因为map的输入为中间结果,一旦作业完成,中间结果可以被删除,因此如果存在HDFS上有些小题大做;
5. reduce的输入通常来自所有mapper的输出,因此不具有“数据本地化“优势,reduce的输出通常存储在HDFS中以实现可靠存储;

备注:HDFS为Hadoop分布式文件系统(Hadoop Distribute File System),其将数据备份多次存储在不同节点,和本地硬盘相比有更高的稳定性但同时代价更大。因此在第4步中才说对于中间结果存储在HDFS上有些小题大做。


多map与多reduce

每个mao任务回针对输出进行分区(partition),即为每个reduce任务建立一个分区。分区通常使用默认的partitioner通过哈希函数分区, 也可以用户用分区函数定义分区规则。
这里写图片描述
图1 多map单reduce
这里写图片描述
图2 多map多reduce
这也是map任务和reduce任务之间的数据流成为混洗(shuffle)的原因。当数据可完全并行时,会出现无reduce的情况。
这里写图片描述
图3 无reduce


combiner函数

在每个节点的map之后执行,节约map和reduce之间的数据传输量。当然也受制于可用的函数类型。
比如在[12,4,90,23,12,9]中找到最大值。假设该Hadoop有两个节点,两个map分别为[12, 4, 90]和[23,12,9],如果不做combiner则共传输6个数字,但若在每个map后执行combiner,传输该map中的最大值就可以将数据量减少到2个数字。当然可以看出,如果是求平均值则无法简单调用combiner 。


结语

本章简单介绍了Hadoop的流程,对应《Hadoop权威指南》2.4节 横向扩展,有兴趣的朋友可阅读原文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这本书很全,是Hadoop中的圣经级教材,不过看起来挺累。 内容简介 Discover how Apache Hadoop can unleash the power of your data. This comprehensive resource shows you how to build and maintain reliable, scalable, distributed systems with the Hadoop framework -- an open source implementation of MapReduce, the algorithm on which Google built its empire. Programmers will find details for analyzing datasets of any size, and administrators will learn how to set up and run Hadoop clusters. This revised edition covers recent changes to Hadoop, including new features such as Hive, Sqoop, and Avro. It also provides illuminating case studies that illustrate how Hadoop is used to solve specific problems. Looking to get the most out of your data? This is your book. Use the Hadoop Distributed File System (HDFS) for storing large datasets, then run distributed computations over those datasets with MapReduce Become familiar with Hadoop’s data and I/O building blocks for compression, data integrity, serialization, and persistence Discover common pitfalls and advanced features for writing real-world MapReduce programs Design, build, and administer a dedicated Hadoop cluster, or run Hadoop in the cloud Use Pig, a high-level query language for large-scale data processing Analyze datasets with Hive, Hadoop’s data warehousing system Take advantage of HBase, Hadoop’s database for structured and semi-structured data Learn ZooKeeper, a toolkit of coordination primitives for building distributed systems "Now you have the opportunity to learn about Hadoop from a master -- not only of the technology, but also of common sense and plain talk."

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值