如何调优mapred.reduce.parallel.copies



阅读http://gbif.blogspot.com/2011/01/setting-up-hadoop-cluster-part-1-manual.html后,我们想用mapred.reduce.parallel.copies进行实验。

博客提到"非常仔细地查看日志"。我们怎么知道已经到达最佳位置了呢?我们应该寻找什么?我们如何检测过度并行化?

为了做到这一点,你应该基本上寻找4个东西:CPU, RAM,磁盘和网络。如果你的设置超过了这些指标的阈值,你就可以推断出你正在突破极限。例如,如果您设置了"mapred.reduce.parallel. path"的值。copy"的值远高于可用的内核数,那么最终会有太多线程处于等待状态,因为基于此属性将创建线程来获取Map输出。此外,网络可能会不堪重负。或者,如果有太多的中间输出需要洗牌,那么您的作业将变得很慢,因为在这种情况下您需要基于磁盘的洗牌,这将比基于RAM的洗牌慢。为"mapred.job.shuffle.input.buffer"选择一个明智的值。根据您的RAM(默认为Reducer堆的70%,这通常很好)。这些东西会告诉你是否过度并行化了。还有很多其他的事情你也应该考虑。我建议你阅读"Hadoop权威指南"的第6章。

为了提高工作效率,你可以采取一些措施,比如使用合并器来限制数据传输,启用中间压缩等。

HTH

p。S:答案不是很具体,只是"mapred.reduce.parallel.copies"。它告诉你如何调整你的工作。实际上,只设置这个属性并没有多大帮助。您还应该考虑其他重要的属性。

达到"最佳点"实际上只是找到能够为您认为最重要的指标(通常是总体工作时间)提供最佳结果的参数。为了弄清楚哪些参数是有效的,我建议使用Hadoop附带的以下分析工具:MrBench、TestDFSIO和NNBench。这些文件可以在hadoop-mapreduce-client-jobclient-*.jar中找到。

通过运行这个命令,您将看到一个长长的基准测试程序列表,除了我上面提到的那些程序之外,您还可以使用这些程序。

hadoop。/分享/hadoop/mapreduce/hadoop-mapreduce-client-jobclient - * . jar

我建议使用默认参数运行,运行测试以给出基准基准,然后更改一个参数并重新运行。有点耗时,但是值得,特别是如果您使用脚本更改参数并运行基准测试。

最新更新