夜雨聆风学习资料网

ARTICLE · 1090620

Hadoop 源码学习手册 06 · MapReduce:分布

Hadoop 源码学习手册 06 · MapReduce:分布

MapReduce 怎么把一个大计算拆成三步?说白了就像整理一堆乱问卷。

Map 阶段,每个人拿一摞按问题分类。Shuffle 把同一个问题的卡片全收一张桌上。Reduce 再汇总统计。精髓是“移动计算到数据”——派统计员去问卷堆那儿,别搬动 TB 级的数据。

Map 端最精妙的是环形缓冲区。一个字节数组两头用,左边长元数据,右边长真实数据。两区相遇就触发溢出写。排序时只交换 16 字节的元数据指针,不用搬动整条数据,极快。而且中间结果直接写本地磁盘,不是 HDFS。

很多人以为 Map 输出直接发给 Reduce。其实中间隔着 Shuffle + Sort。Reduce 端会主动通过 HTTP 拉取数据,再归并成一个全局有序流。

作业调度也藏着坑。默认最多尝试 4 次,第 1 次失败后只剩 3 次机会。备份尝试也算在内,频繁起备份反而容易耗尽次数。另外,Reduce 优先级其实比常规 Map 高,只是它被延迟申请了,所以看着像 Map 先跑。

要是作业特别小,还会走 Uber 模式。直接在 AM 进程里串行跑,省掉申请容器的开销。但作业稍大就得退回正常模式,串行反而更慢。

原文Hadoop 源码学习手册 06 · MapReduce:分布式计算框架|口袋通识馆
山西,2小时前,

相关学习资料