在Hadoop中,如果我们没有设置减速器数量,那么将创建多少减速器?
像映射器的数量取决于(总数据大小)/(输入分割大小),例如,如果数据大小是1 TB并且输入分割大小是100 MB.然后映射器的数量将是(1000*1000)/ 100 = 10000(一万).
减速机的数量取决于哪些因素?为工作创建了多少减速器?
减少了多少?(来自官方文档)
正确的减少数量似乎是0.95或1.75乘以(节点数)*(每个节点的最大容器数).
使用0.95时,所有缩减都可以立即启动,并在地图完成后开始传输地图输出.使用1.75,更快的节点将完成第一轮减少并启动第二波减少,从而更好地实现负载平衡.
增加减少的数量会增加框架开销,但会增加负载平衡并降低故障成本.
上面的缩放因子略小于整数,以便在框架中为推测任务和失败任务保留一些减少时隙.
本文还介绍了Mapper计数.
有多少地图?
映射的数量通常由输入的总大小驱动,即输入文件的块总数.
地图的正确并行度似乎是每个节点大约10-100个地图,尽管已经为非常cpu-light地图任务设置了300个地图.任务设置需要一段时间,因此最好是地图至少需要一分钟才能执行.
因此,如果您期望10TB的输入数据并且块大小为128MB,那么最终会得到82,000个映射,除非Configuration.set(MRJobConfig.NUM_MAPS, int)
(仅提供框架提示)用于将其设置得更高.
如果要为减速器数更改默认值1,可以将以下属性(来自hadoop 2.x版本)设置为命令行参数
mapreduce.job.reduces
要么
你可以用编程设置
job.setNumReduceTasks(integer_numer);
看看另一个相关的SE问题:Hadoop上理想的减速器数量是多少?