Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 确定映射/减少作业瓶颈的正确方法是什么?_Hadoop - Fatal编程技术网

Hadoop 确定映射/减少作业瓶颈的正确方法是什么?

Hadoop 确定映射/减少作业瓶颈的正确方法是什么?,hadoop,Hadoop,在正常的java开发中,如果我想提高应用程序的性能,我通常的过程是使用附加的探查器运行程序,或者在应用程序中嵌入一组插入标记。无论哪种情况,直接的目标都是确定应用程序的热点,并随后能够测量我所做更改的效果 当应用程序是在hadoop集群中运行的map/reduce作业时,正确的模拟是什么 当作业的运行速度似乎比在开发沙箱中运行等效逻辑所预测的要慢时,有哪些选项可用于收集性能数据?Map/Reduce Framework 在作业跟踪器中查看作业。在这里,您将看到映射器和还原器需要多长时间。一个常见

在正常的java开发中,如果我想提高应用程序的性能,我通常的过程是使用附加的探查器运行程序,或者在应用程序中嵌入一组插入标记。无论哪种情况,直接的目标都是确定应用程序的热点,并随后能够测量我所做更改的效果

当应用程序是在hadoop集群中运行的map/reduce作业时,正确的模拟是什么

当作业的运行速度似乎比在开发沙箱中运行等效逻辑所预测的要慢时,有哪些选项可用于收集性能数据?

Map/Reduce Framework 在作业跟踪器中查看作业。在这里,您将看到映射器和还原器需要多长时间。一个常见的例子是,如果您在减速器中做了太多的工作。在这种情况下,您会注意到映射器很快就会完成,而还原器则需要花费很长时间。
看看你所有的地图绘制者是否都花了相似的时间,这可能也很有趣。也许这项工作被一些缓慢的任务耽搁了?这可能表明集群中存在硬件缺陷(在这种情况下,推测性执行可能是答案),或者工作负载分布不够均匀

操作系统 观察节点(使用简单的top或监视,如muninganglia),查看您的作业是cpu绑定的还是io绑定的。例如,如果reduce阶段是io绑定的,则可以增加使用的reducer的数量。
您可能会在这里检测到的其他情况是,当您的任务占用了大量内存时。如果TaskTracker没有足够的RAM,那么增加每个节点的任务数实际上可能会影响性能。监控系统可能会突出显示所产生的交换

单一任务 您可以独立运行映射器/还原器进行分析。在这种情况下,您可以使用您已经知道的所有工具。
如果您认为只有在集群中执行作业时才会出现性能问题,则可以使用
System.nanoTime()
测量代码相关部分的时间,并使用System.out输出一些粗略的性能数字。
当然,还可以选择向子JVM添加JVM参数,并远程连接探查器