7.33 Shuffle过程详解 1. Shuffle过程简介 Map任务 溢写(分区、排序、合并)任务 数据被Redu Reduce任务 并 缓存 输入 磁盘文件归并 归并 输出 Map uce 多个分区 其他Map任务 其他 Reduce任务 图73 Shuffle过程 大数据技术原理与应用(第3 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 7.3.3Shuffle过程详解 输入 缓存 溢写(分区、排序、合并) 数据被Reduce 任务取走 磁盘文件归并 多个分区 归并 归并 输出 Map任务 Reduce任务 其他Map任务 其他Reduce任务 Map Reduce 图7-3 Shuffle过程 1. Shuffle过程简介
7.33 Shuffle过程详解 2Map端的 Shuffle过程 每个Map任务分配一个缓存 ①输入数据和执行Map任务 MapReduce默认100MB缓存 Map任务 设置溢写比例0.8 ·分区默认采用哈希函数 写入缓存 ·排序是默认的操作 ·排序后可以合并( Combine) 缓存 ·合并不能改变最终结果 在Map任务全部结束之前进行归并 (3溢写(分区、排序合并)归并得到一个大的文件,放在本地 磁盘 ·文件归并时,如果溢写文件数量大 于预定值(默认是3)则可以再次启 4文件归并 动 Combiner,少于3不需要 Job tracker会一直监测Map任务的执 行,并通知 Reduce任务来领取数据 合并( Combine)和归并( Merge)的区别: 两个键值对<“a”,1>和<“a",1>,如果合并,会得到<a”,2>,如果归并,会得到<“a”,<1,1>> 大数据技术原理与应用(第3版 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 7.3.3Shuffle过程详解 2. Map端的Shuffle过程 Map任务 缓存 1 2 输入数据和执行Map任务 写入缓存 3 溢写(分区、排序、合并) 4 文件归并 •每个Map任务分配一个缓存 •MapReduce默认100MB缓存 •设置溢写比例0.8 •分区默认采用哈希函数 •排序是默认的操作 •排序后可以合并(Combine) •合并不能改变最终结果 •在Map任务全部结束之前进行归并 •归并得到一个大的文件,放在本地 磁盘 •文件归并时,如果溢写文件数量大 于预定值(默认是3)则可以再次启 动Combiner,少于3不需要 •JobTracker会一直监测Map任务的执 行,并通知Reduce任务来领取数据 合并(Combine)和归并(Merge)的区别: 两个键值对<“a”,1>和<“a”,1>,如果合并,会得到<“a”,2>,如果归并,会得到<“a”,<1,1>>
7.33 Shuffle过程详解 3. Reduce端的Shuf|e过程 Reduce任务通过RPC向 Job tracker询问Map任务是否已经完成,若完成,则领取数据 Reduce领取数据先放入缓存,来自不同Map机器,先归并,再合并,写入磁盘 ·多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的 当数据很少时,不需要溢写到磁盘,直接在缓存中归并,然后输出给 Reduce 其他 Reduce任务 1Map任务 ①领取”数据 Reduce任务 缓存 ②归并数据 把数据输入给 磁盘 Reduce任务 其他Map任务 文件归并 →其他 Reduce任务 图7-5 Reduce端的 Shuffle过程 大数据技术原理与应用(第3版 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 7.3.3Shuffle过程详解 3. Reduce端的Shuffle过程 缓存 Map任务 Reduce任务 磁盘 磁盘 文件归并 其他Map任务 “领取”数据 归并数据 把数据输入给 Reduce任务 1 2 3 其他Reduce任务 分区 分区 其他Reduce任务 图7-5 Reduce端的Shuffle过程 •Reduce任务通过RPC向JobTracker询问Map任务是否已经完成,若完成,则领取数据 •Reduce领取数据先放入缓存,来自不同Map机器,先归并,再合并,写入磁盘 •多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的 •当数据很少时,不需要溢写到磁盘,直接在缓存中归并,然后输出给Reduce
7.34 MapReduce应用程序执行过程 用户程序 (1)程序部署 (1)程序部署 Master (1)程序部署 (2)分配Map任务 (2)分配 Reduce任务 Worker x 分片0 6)写数据小输出文件0 分片1 (5)远程读数据 Worker 分片2 (3)读数据 (4)本地写数据 Worker Worker →输出文件1 分片M Worker 中间文件 输入文件 Map阶段 Reduce阶段 输出文件 (位于本地磁盘) 大数据技术原理与应用(第3版 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 7.3.4 MapReduce应用程序执行过程 输出文件0 输出文件1 Worker 分片0 分片1 分片2 …… 分片M Worker Worker Worker Worker Master 用户程序 (1)程序部署 (1)程序部署 (1)程序部署 (2)分配Map任务 (2)分配Reduce任务 (4) 本地写数据 (5)远程读数据 (3) 读数据 (6) 写数据 输入文件 Map阶段 中间文件 (位于本地磁盘) Reduce 阶段 输出文件
74实例分析: WordCount ·7.4.1 WordCount程序任务 ·7.4.2 Wordcount设计思路 74.3 个 WordCount执行过程的实例 大数据技术原理与应用(第3 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《大数据技术原理与应用(第3版)》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 7.4 实例分析:WordCount • 7.4.1 WordCount程序任务 • 7.4.2 WordCount设计思路 • 7.4.3 一个WordCount执行过程的实例