Iho*_* B. 5 java profiling hadoop mapreduce apache-spark
有谁知道如何对Hadoop集群中运行的所有Java代码进行性能分析?
我将通过一个简单的示例进行解释。如果我们进行本地Java开发,则可以运行Yourkit来测量每个类的每个方法占用的CPU百分比。我们可以看到类A调用了方法X,这花费了整个应用程序90%的执行时间,然后修复了代码效率低下的问题。
但是,如果我们正在执行mapreduce工作并在集群中运行它,那么我也想看看是什么迟钝的东西:我们的map / reduce代码或框架本身。因此,我想拥有一个服务,该服务获取有关每个类/方法调用及其执行时间的信息,并将其收集到HDFS中,然后分析具有CPU消耗的方法调用树。
问题:有人知道这样的解决方案是否存在吗?
PS注意:我知道这样的事情会使群集速度变慢。而且我知道应该在测试集群上或与客户达成协议来完成此操作。现在的问题是“存在这样的东西吗?”。谢谢。
我解决了问题。在这里http://ihorbobak.com/index.php/2015/08/05/cluster-profiling/您可能会找到有关如何执行此操作的详细说明。
简短摘要:如何完成分析:
火焰图是由Brendann Gregg发明的,网址为http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html。布伦丹(Brendan)有一个很好的视频,解释了它的工作原理:https : //www.youtube.com/watch?v=nZfNehCzGdw。我强烈建议阅读该作者写的一本非常不错的书“系统性能:企业和云”。