在阅读http://gbif.blogspot.com/2011/01/setting-up-hadoop-cluster-part-1-manual.html之后,我们想要试验mapred.reduce.parallel.copies.
该博客提到"仔细查看日志".我们怎么知道我们已经达到了最佳点?我们应该寻找什么?我们怎样才能发现我们过度并行化?
为了做到这一点,你应该基本上寻找4件事:CPU,RAM,磁盘和网络.如果您的设置超过了这些指标的阈值,您可以推断出您正在推动限制.例如,如果您将"mapred.reduce.parallel.copies"的值设置为远高于可用核心数的值,则在等待状态下最终会有太多线程,因为基于此属性Threads将创建以获取Map输出.除了那个网络可能会不堪重负.或者,如果有太多的中间输出被洗牌,你的工作将会变慢,因为在这种情况下你将需要基于磁盘的shuffle,这将比基于RAM的shuffle慢.根据您的RAM选择"mapred.job.shuffle.input.buffer.percent"的明智值(默认为Reducer堆的70%,这通常很好).所以,这些都会告诉你是否过度并行化.还有很多其他事情你应该考虑.我建议你阅读"Hadoop Definitve Guide"的第6章.
为了使您的工作高效,您可以采取的一些措施就像使用组合器来限制数据传输,启用中间压缩等.
HTH
PS:答案不仅仅是"mapred.reduce.parallel.copies".它告诉你一般调整你的工作.实际上只设置这个属性不会对你有多大帮助.您还应该考虑其他重要的属性.