MapReduce实现日记-任务粒度如何把握

MapReduce实现日记-任务粒度如何把握

通常,我们将map阶段分为M个片段,将Reduce阶段分为R个片段。在理想的情况下,M和R应该远大于工作机器的数量。为了让每一个worker都能执行不同的任务来动态的保持负载均衡。并且在worker发生故障时,能够加快恢复速度,比如已经完成的map任务可以分布在其他所有worker上。

在现实开发中,M和R的大小是有实际限制的,因为master必须作出O(M+R)的决策调度,并在内存中保持O(M*R)的状态。

此外R的数量经常受到用户的限制,因为每个reduce任务的输出最终都是在一个单独的输出文件中。在实际中,我们倾向于选择M的任务,大约在16M到64M的输入数据(这种情况可以确保局部新能优化最有效)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容