map-reduce的优化:
需要内存的地方: map/reduce任务运行时内存、存放中间数据的内存缓存区、map输出数据排序内存,
需要操作磁盘的地方: map输出数据缓冲区达到阀值的溢出写文件, map缓冲区满写磁盘,map最后输出写磁盘, shuffle复制map输出的数据缓冲区阀值的溢出写文件,reduce读输入磁盘, 这些都是中间阶段对磁盘的操作。
运行内存越大,运行速度越快; 中间数据越多,即缓冲区越大,读磁盘和写磁盘的次数越少,所以,这是个辩证的过程。如果运行需要的内存少,可以将缓冲区设置大一些。
原文:http://www.cnblogs.com/kangls/p/3613438.html