`

(转)关于Hadoop的shuffle

 
阅读更多

 

源地址: http://blog.csdn.net/tobeandnottobe/article/details/7188747

 

我们知道每个reduce task输入的key都是按照key排序的。

      但是每个map的输出只是简单的key-value而非key-valuelist,所以洗牌的工作就是将map输出转化为reducer的输入的过程。

 

      在map结束之后shuffle要做的事情:

      map的输出不是简单的写入本地文件,而是更多的利用内存缓存和预排序工作,以提高效率。io.sort.mb 用于控制map 输出时候的内存大小,默认100Mb。
当map所使用的buffer达到一定比例的时候,会启动一个线程来将内存中数据写入磁盘。此时map过程不会暂停直到内存消耗完位置。这个线程会先将内 存中的数据按照reducer的数据切分成多块,可能是按照reducer大小hash,然后对于每个块里面的数据按照key进行sort排序,此时假如 定义了一个combiner函数,那么排序的结果就是combiner的输入。每当数据缓存大小达到了限制,一个新的spill文件就会被创建。所以,当 map所有的数据都被处理了之后,就需要对多个spill文件进行合并操作。combiner的作用是为了压缩mapper的输出结果,另外 combiner函数需要满足n次combiner之后,输出结果都保持一致。当然,合并成一个文件的时候hadoop默认不会压缩数据,但是可以通过设 置参数指定某个压缩类对数据进行压缩。
     在reducer开始之前shuffle要做的事情分为两步copy和sort 阶段:
     copy phrase
     每个reducer  task新建几个thread用于将mapper的输出并行copy过来,copy时机是当一个mapper完成之后就可以进行。
但是reducer是如何知晓某个mapper是否完成了任务呢,mapper完成之后会给tasktracker发送一个状态更新,然后 tasktraker会将该信息发送给jobtrack。然后reducer中的一个线程负责询问jobtracker 每个map的输出位置。而每个mapper上的输出数据需要等到整个job完成之后,jobtracker会通知删除。
    sort phrase
   将多个map输出合并成一个输入。
   example:50个map输出 分5 round进行文件合并,每次将10个文件合并成一个。
最后5个文件可能直接进入reducer阶段。
   关于Task中所谓的Speculative Execution
是指当一个job的所有task都在running的时候,当某个task的进度比平均进度慢时才会启动一个和当前Task一模一样的任务,当其中一个 task完成之后另外一个会被中止,所以Speculative Task不是重复Task而是对Task执行时候的一种优化策略

分享到:
评论

相关推荐

    Hadoop Shuffle过程全解析

    Hadoop Mapreduce过程shuffle过程全解析,Shuffle过程

    简单说一下hadoop和spark的shuffle过程.md

    简单说一下hadoop和spark的shuffle过程

    hadoop shuffle和排序1

    hadoop学习笔记-shuffle和排序 shuffle是指将map输出作为输入传给reduce的过程。

    hadoop-mapreduce-client-shuffle-2.5.1-API文档-中文版.zip

    赠送jar包:hadoop-mapreduce-client-shuffle-2.5.1.jar; 赠送原API文档:hadoop-mapreduce-client-shuffle-2.5.1-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-shuffle-2.5.1-sources.jar; 赠送Maven依赖...

    hadoop-mapreduce-client-shuffle-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-mapreduce-client-shuffle-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-shuffle-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-shuffle-2.6.5-sources.jar; 赠送Maven依赖...

    hadoop-mapreduce-client-shuffle-2.5.1-API文档-中英对照版.zip

    赠送jar包:hadoop-mapreduce-client-shuffle-2.5.1.jar; 赠送原API文档:hadoop-mapreduce-client-shuffle-2.5.1-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-shuffle-2.5.1-sources.jar; 赠送Maven依赖...

    hadoop-mapreduce-client-shuffle-2.6.5-API文档-中英对照版.zip

    赠送jar包:hadoop-mapreduce-client-shuffle-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-shuffle-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-shuffle-2.6.5-sources.jar; 赠送Maven依赖...

    hadoop最新版本3.1.1全量jar包

    hadoop-client-minicluster-3.1.1.jar hadoop-mapreduce-client-app-3.1.1.jar hadoop-mapreduce-client-shuffle-3.1.1.jar hadoop-yarn-server-common-3.1.1.jar hadoop-client-runtime-3.1.1.jar hadoop-mapreduce...

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    第一天 hadoop的基本概念 伪分布式hadoop集群安装 hdfs mapreduce 演示 01-hadoop职位需求状况.avi 02-hadoop课程安排.avi 03-hadoop应用场景.avi 04-hadoop对海量数据处理的解决思路.avi 05-hadoop版本选择和...

    hadoop-2.2.0-src.tar

    hadoop源码2.2.0 ...YARN/MapReduce - Users need to change ShuffleHandler service name from mapreduce.shuffle to mapreduce_shuffle. Please see the Hadoop 2.2.0 Release Notes for details.

    apache hadoop 2.7.2.chm

    apahe hadoop2.7.2 官方文档,离线版 General Overview Single Node Setup Cluster Setup Hadoop Commands Reference FileSystem Shell Hadoop Compatibility Interface Classification FileSystem ...

    Hadoop从入门到上手企业开发

    062 MapReduce Shuffle过程讲解和Map Shuffle Phase讲解 063 Reduce Shuffle Phase讲解 064 源代码跟踪查看Map Task和Reduce Task数目的个数 065 回顾MapReduce执行过程以及MapReduce核心 066 Hadoop MapReduce框架...

    Hadoop权威指南 第二版(中文版)

     shuffle和排序  map端  reduce端  配置的调优  任务的执行  推测式执行  重用JVM  跳过坏记录  任务执行环境 第7章 MapReduce的类型与格式  MapReduce的类型  默认的MapReduce作业  输入格式  输入分...

    hadoop段海涛老师八天实战视频

    第一天 hadoop的基本概念 伪...第四天 常见mr算法实现和shuffle的机制 01-复习.avi 02-hadoop中的序列化机制.avi 03-流量求和mr程序开发.avi 04-hadoop的自定义排序实现.avi 05-mr程序中自定义分组的实现.avi

    Hadoop权威指南(中文版)2015上传.rar

    shuffle和排序 map端 reduce端 配置的调优 任务的执行 推测式执行 重用JVM 跳过坏记录 任务执行环境 第7章 MapReduce的类型与格式 MapReduce的类型 默认的MapReduce作业 输入格式 输入分片与记录 文本输入 二进制...

    [Hadoop] 传智播客新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    有的人用这个骗钱,或者上传的都是残缺资源,我这...第四天 常见mr算法实现和shuffle的机制 第五天 hadoop2.x中HA机制的原理和全分布式集群安装部署及维护 第六天 hbase hive 第七天 storm+kafka 第八天 实战项目

    Hadoop开发者第一期入门专刊

    50 MapReduce 中的Shuffle 和Sort 分析 53 海量数据存储和计算平台的调试器研究 56 探讨MapReduce 模型的改进 58 运行eclipse 编译出的Hadoop 框架 59 表关联在MapReduce 上的实现 63 Hadoop 计算平台和Hadoop 数据...

    hadoop-2.2.0-x64.tar.gz part3

    [INFO] hadoop-mapreduce-client-shuffle ................... SUCCESS [2.650s] [INFO] hadoop-mapreduce-client-app ....................... SUCCESS [10.628s] [INFO] hadoop-mapreduce-client-hs ................

    Apache Spark Shuffle I/O 在 Facebook 的优化

    我们都知道,Shuffle 操作在 Spark 中是一种昂贵的操作。在 Facebook,单个 Job 的 Shuffle 就可能往磁盘中写入 300TB 的数据;而且 shuffle reads 也是一种低效的操作,这会大大延长作业的整体执行时间,并且消耗...

Global site tag (gtag.js) - Google Analytics