Hadoop Shuffle的流程

Shuffle描述的是从Map执行完毕到Reduce开始运行之前数据的传递过程。
主要分为两个阶段:

1. Map result-->磁盘
  1. map task会将结果放到内存的缓冲区中,当缓冲区中占用的比例超过阈值时,tasktracker会启动一个线程将结果写入磁盘,combiner会在spill之前执行一轮。
  2. 当多个map task都将结果写入磁盘,会在磁盘中生成大量小文件,tasktracker会启动另一个线程将这些小文件合并为一个大文件,合并之前会再次进行combiner,同时会保存一个索引文件,记录应该发送到每个reducer的数据块在大文件中的偏移量。
2. 磁盘-->Reduce input
  1. reducer 会通过heartbeat周期性的向jobtrakcer查询map的进度和datanode节点地址和当前reducer在大文件中的偏移量(查找索引文件)
  2. 如果有mapper 完成任务,会启动多个线程通过http协议向对应datanode请求数据,获取数据之后会进行归并排序,使得具有相同的key的kv对连在一起,每个key启动一个reduce task进行相应的处理。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MapReduce框架结构## MapReduce是一个用于大规模数据处理的分布式计算模型MapReduce模型主...
    Bloo_m阅读 3,847评论 0 4
  • 目的这篇教程从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面。先决条件请先确认Had...
    SeanC52111阅读 1,784评论 0 1
  • 思考问题 MapReduce总结 MapReduce MapReduce的定义MapReduce是一种编程模型, ...
    Sakura_P阅读 972评论 0 1
  • 一个若影若现的梦惊扰了我。现在想想喜忧参半。我看到一个又一个的“恶魔”向我扑来,他们狰狞的面孔,让我不寒而栗。他们...
    爱萧阅读 330评论 0 1
  • 《巴哈姆特之怒VIRGIN SOUL》 作为四月的准霸权番,14年《巴哈姆特之怒GENESIS》的续作,身边观看的...
    茜羽阅读 7,090评论 12 37