java - 我如何以编程方式获取 Hadoop 在 Web 界面中显示的所有作业跟踪器和任务跟踪器信息?

标签 java hadoop mapreduce

我使用的是 Cloudera 的 Hadoop 发行版 CDH-0.20.2CDH3u0。 有什么办法可以使用在 hadoop 框架之外运行的 JAVA 程序获取诸如 jobtracker 状态、tasktracker 状态、计数器等信息?我尝试使用 JMX 进行监听,但 hadoop 提供的有关 Jobtracker、tasktracker 和数据节点的信息非常少。它不提供与运行作业状态相关的任何 JMX 属性,例如映射完成百分比、减少完成百分比、任务完成百分比、尝试完成百分比、计数器状态等。

此外,我尝试使用 hadoop 转储的指标日志。但它也不包含任何有关 map/reduce 完成百分比、任务完成百分比的信息。

我认为,应该有一些替代方法来获得所有这些东西。

请回复。

最佳答案

您可以使用 Hadoop API 以编程方式访问此信息。特别是,使用适合集群的配置实例化 JobClient,然后您可以在该实例上使用 getJob 来获取 RunningJob。有了它,您应该能够获得您正在寻找的细节(以下代码完全未经测试,但我希望朝着正确的方向发展):

JobClient theJobClient = new JobClient(new InetSocketAddress("your.job.tracker", 8021), new Configuration());
RunningJob theJob = theJobClient.getJob("job_id_string"); // caution, deprecated
float mapProgress = theJob.mapProgress(); // similar for reduceProgress
// etc (see RunningJob)

您还可以使用 theJobClient.jobsToComplete 获取当前正在运行的作业列表,它返回一个 JobStatus 数组,它应该公开类似的值(mapProgress 等),并且可以提供可用于获取上面的 RunningJobJobID 实例(如果您想避免弃用的方法)。

当然还有更多的选择。从 http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/mapred/JobClient.html 开始了解更多详情。

关于java - 我如何以编程方式获取 Hadoop 在 Web 界面中显示的所有作业跟踪器和任务跟踪器信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620374/

相关文章:

java - log4j: 错误 setFile(null,false) 调用失败

hadoop - Pig 为简单的 Group by 和 count occurrence 任务抛出错误

java - 提交远程应用到hadoop时如何设置jar路径?

hadoop - 在使用 MapReduce 执行字数统计时,是否可以在 map 函数中将数据拆分为字词?

java - JPA @Query,具有限制的元素的平均值

java - 匹配 REST 中的空路径参数

apache - 使用 Apache Mahout 对数据进行分类

python - 在本地测试 mapreduce 流作业的更优雅的方法?

hadoop - 运行Yarn Jar MRAppMaster NoSuchMethodERror时出错

java - 在Java中访问方法的变量