0

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

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

有什么方法可以修改我的映射器/减少器,以便 JVisualVM 可以看到它们,至少在伪分布式模式下调试时?

为了完整起见,我应该说我正在运行 Cloudera 的 Hadoop 0.20。(它是使用存储库安装在 Ubuntu 上apt-get install hadoop-0.20-conf-pseudohttp://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh precise-cdh4 contrib。尽管 Cloudera 将 2.x 放在版本号中,但它不是 YARN,它是原始的 Hadoop。)

% hadoop version
Hadoop 2.0.0-cdh4.4.0
Subversion file:///var/lib/jenkins/workspace/generic-package-ubuntu64-12-04/CDH4.4.0-Packaging-Hadoop-2013-09-03_18-48-35/hadoop-2.0.0+1475-1.cdh4.4.0.p0.23~precise/src/hadoop-common-project/hadoop-common -r c0eba6cd38c984557e96a16ccd7356b7de835e79
Compiled by jenkins on Tue Sep  3 19:33:54 PDT 2013
From source with checksum ac7e170aa709b3ace13dc5f775487180
This command was run using /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.4.0.jar
4

1 回答 1

1

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

默认情况下,mapper 和 reducer 作为单独的进程运行。在 JVisualVM 中看不到是因为 JVisualVM 没有正确的权限。Mappers 和 reducers 在 user 下启动mapred。所以如果你想使用 JVisualVM,你需要使用sudo -E -u mapred jvisualvm.

于 2013-09-29T05:52:54.777 回答