MapReduce确保每个reducer的输入都按键排序.将map的输出作为输入传给reducer的过程称为shuffle,学习shuffle是如何工作的有助于我们更好的理解MapReduce
每个Map任务都有一个内存缓冲区,用于存储任务的输出,默认情况下缓冲区的大小为100MB,一旦缓冲区内容达到阙值(默认0.8),一个后台线程便会把内容写到磁盘.在写磁盘的过程中,map输出继续被写到缓冲区,但此时如果缓冲区被填满,map会阻塞直到写磁盘过程完成.
在写磁盘之前,线程还会根据最终要传送的reducer把数据划分成相应的分区,并对每个分区进行内排序,如果有一个combiner,它会在排序后的输出上运行.运行combiner的意义在于使map输出更紧凑,使得写到本地磁盘和传给reducer的数据更少.
写磁盘时压缩map的输出会让写磁盘的速度更快,节约磁盘空间,并减少传给reducer的数据量.用于文件分区的工作线程的设置是针对每个tasktracker,而不是针对map任务槽,默认为40
reducer端通过http方式得到输出文件的分区.一般情况下,reduce任务需要集群上若干个map任务的map输出作为其输入.每个map任务完成时间不同,因此只要有一个map任务完成,reduce任务就开始复制其输出,reduce任务有少量复制线程,默认为5.由于reduce任务有可能失败,因此tasktracker并不会在第一个reducer检索到map输出时就立即从磁盘上删除它们,而是等jobtracker通知作业完成后执行删除操作的.
如果map输出相当小则直接复制到reduce的内存,不需要写磁盘.随着磁盘上的副本越来越多,后台线程会将它们合并为更大的,排好序的文件,为了合并,压缩的map输出都必须在内存中被解压缩,
复制完map输出,reduce任务进行排序阶段,这个阶段会合并map输出,维持其顺序排序.如果有50个map输出,而合并因子为10,合并将进行5趟,每趟将10个文件合并成一个文件,因此最后有5个中间文件.最后直接把数据输入reduce函数,从而省略了一次磁盘往返行程,没有将5个文件合并一趟.
在reduce阶段,.对已排序的每个键都调用reduce函数,此阶段的输出直接输出到文件系统,一般为HDFS.由于tasktracker也是存储数据的节点,因此reduce输出的第一个块副本将会写到本地磁盘.
理解shuffle的过程对MapReduce的调优非常有好处.从上可以看出,为shuffle过程提供尽量多的内存空间,避免多次溢出写磁盘,让数据常驻内存都有利于性能的提高.
分享到:
相关推荐
1、数据编排技术: Alluxio概览 Alluxio部署 Alluxio整合计算引擎 2、datalake数据湖技术: Hudi概览 Hudi整合Spark Hudi整合Flink ...MapReduce输入输出剖析 MapReduce的工作机制 5.3 Yarn 等等太多了!!!
从计算的角度上看,Map/Reduce框架接受各种格式的键值对文件作为输入,读取计算后,最终生成自定义格式的输出文件。而从分布式的角度上看,分布式计算的输入文件往往规模巨大,且分布在多个机器上,单机计算完全不可...
FocusBigData :elephant:Hadoop分布存储框架 Hadoop篇 HDFS篇 ...MapReduce之InputFormat数据输入 MapReduce之OutputFormat数据输出 MapReduce之Shuffle机制 MapReduce之MapJoin和ReduceJoin MapReduce之
MapReduce的工作机制;MapReduce的类型和格式;MapReduce的特性;如何构建Hadoop集群,如何管理Hadoop;Pig简介;Hbase简介;Hive简介;ZooKeeper简介;开源工具Sqoop,最后还提供了丰富的案例分析。 本书是Hadoop...
PISCES扩展了现有的MapReduce框架,从而可以根据输入和输出目录动态地为当前正在运行的作业建立作业依赖项DAG,从而调度具有依赖项的多个作业。 然后,使用依赖项DAG,它提供了一种创新的机制来促进上游作业的输出...
第6章 MapReduce的工作机制 剖析MapReduce作业运行机制 作业的提交 作业的初始化 任务的分配 任务的执行 进度和状态的更新 作业的完成 失败 任务失败 tasktracker失败 jobtracker失败 作业的调度 Fair Scheduler ...
3.4.1 输入输出格式 技术点18 输入和输出格式为CSV 的文件 3.4.2 output committing 的重要性 3.5 本章小结 第3 部分 大数据模式 4 处理大数据的MapReduce 模式 4.1 Join 4.1.1 Repartition Join ...
技术点16 使用Thrift3.3.5 Avro技术点17 MapReduce 的下一代数据序列化技术3.4 自定义文件格式3.4.1 输入输出格式技术点18 输入和输出格式为CSV 的文件3.4.2 output committing 的重要性 3.5 本章小...
ReduceTask工作机制 (1)Copy阶段:ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。 (2)Merge阶段:在远程拷贝数据的同时,Reduce...
(5个阶段) 3、map方法是如何调用reduce方法的 答:Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方,Hadoop的shuffle过程就是从map端输出到reduce端输入之间的过程。 map过程的输出是写入本地磁盘而不是...
10.5.4 输入输出方法 263 10.5.5 杂项方法 265 10.6 对象的相等 265 10.6.1 equals方法 266 10.6.2 == 和!=方法 266 10.6.3 eq 和ne方法 267 10.6.4 数组相等和sameElements方法 267 10.7 本...
95_从db输入数据进行mr计算: L. M4 I6 y, R2 l/ u/ L 96_输出数据到db中 97_NLineInputFormat& u( k1 T& z( O# P, S* y1 Y 98_KeyValueTextInputFormat* p$ O1 z- h, n" e( x1 s& c% z' v 99_join mapper端连接- N, ...