如何使用VisualVM在伪分布式模式下监控Hadoop?

时间:2013-09-27 21:51:20

标签: java hadoop jvisualvm

我正在以伪分布模式运行Hadoop,以便在我的本地计算机上进行测试。我想在JVisualVM中监视我的映射器和缩减器的内存和CPU使用情况。但是,在JVisualVM的本地应用程序列表中,我只看到org.apache.hadoop.util.RunJar

  • 映射器和减速器是否作为单独的进程运行? (在top中,它看起来像是:两个名为“java”的进程在我的两个映射器运行时使用100%CPU。)如果它们是单独的进程,为什么JVisualVM不将它们列为我可以使用的应用程序显示器?
  • 映射器和缩减器是否包含在org.apache.hadoop.util.RunJar进程中?如果是这样,(a)为什么我只在JVisualVM采样器中看到ToolToolRunner,而不是任何mapper / reducer代码,以及(b)为什么JVisualVM在{{1}时报告几乎0%的CPU报告100%?

我是否可以通过某种方式修改我的映射器/缩减器,以便JVisualVM可以看到它们,至少在以伪分布模式进行调试时?

为了完整起见,我应该说我正在从Cloudera运行Hadoop 0.20。 (它是使用top存储库中的apt-get install hadoop-0.20-conf-pseudo在Ubuntu上安装的。尽管Cloudera在版本号中放置了2.x,但它不是YARN,它是最初的Hadoop。)

http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh precise-cdh4 contrib

1 个答案:

答案 0 :(得分:1)

当您使用hadoop jar [your_args]启动应用程序时,实际上命令为java -jar org.apache.hadoop.util.RunJar [your_args]。因此,用于启动MapReduce作业的驱动程序正在RunJar进程中运行。

默认情况下,映射器和Reducer作为单独的进程运行。您无法在JVisualVM中看到它,因为JVisualVM没有正确的权限。映射器和缩减器在用户mapred下启动。因此,如果您想使用JVisualVM,则需要使用sudo -E -u mapred jvisualvm