SSa*_*ker 2 java hadoop mapreduce
我正在使用Cloudera的Hadoop发行版CDH-0.20.2CDH3u0.有没有什么方法可以获得诸如jobtracker状态,tasktracker状态,使用在hadoop框架之外运行的JAVA程序的计数器等信息?我尝试使用JMX进行监听,但hadoop提供的有关Jobtracker,tasktracker和datanode的信息非常少.它不提供与运行作业状态相关的任何JMX属性,如映射百分比完成,减少完成百分比,任务完成百分比,尝试完成百分比,计数器状态等.
此外,我尝试使用hadoop转储的指标日志.但它也不包含任何关于地图/减少完成百分比,完成任务百分比的信息.
我认为,应该有一些替代方法来获得所有这些东西.
请回复.
您可以使用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)
Run Code Online (Sandbox Code Playgroud)
您还可以获取当前正在运行的作业列表,该列表theJobClient.jobsToComplete返回一个数组JobStatus,该数组应该公开类似的值(mapProgress等),并且可以提供JobID可用于获取RunningJob上述内容的实例(如果您想避免使用不推荐的方法) ).
当然还有其他选择.从http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/mapred/JobClient.html开始了解更多详情.
| 归档时间: |
|
| 查看次数: |
5283 次 |
| 最近记录: |