gpt4 book ai didi

java - Hadoop MapReduce 作业 : Get the counter outside of the native jvm

转载 作者:可可西里 更新时间:2023-11-01 16:57:45 24 4
gpt4 key购买 nike

我是 Hadoop 和 Hbase 的新手。

我的用例非常简单:我想在运行时获取作业的reduce input groups 计数(即获取从启动开始更新的计数器到工作的终止)。

到目前为止我搜索到的内容:所有与作业相关的日志都写在目录 /var/log/hadoop/userlogs 下,如下所示:

[root@dev1-slave1 userlogs]# pwd
/var/log/hadoop/userlogs
[root@dev1-slave1 userlogs]# ll
total 24
drwx--x--- 2 mapred mapred 4096 Jan 13 19:59 job_201501121917_0008
drwx--x--- 2 mapred mapred 4096 Jan 13 11:31 job_201501121917_0009
drwx--x--- 2 mapred mapred 4096 Jan 13 12:01 job_201501121917_0010
drwx--x--- 2 mapred mapred 4096 Jan 13 12:13 job_201501121917_0011
drwx--x--- 2 mapred mapred 4096 Jan 13 12:23 job_201501121917_0012
drwx--x--- 2 mapred mapred 4096 Jan 13 19:59 job_201501121917_0013

在每个job下,都有attempt_201501121917_0013_m_000000_0(mapper日志)和attempt_201501121917_0013_r_000000_0(reducer日志)等目录。

reducer 日志目录 attempt_201501121917_0013_r_000000_0 包含 syslog,其中包含有关作业运行的信息。但是它没有显示任何关于计数器的信息。

从 hadoop 的 jobtracker UI 中,我可以看到计数器 reduce input groups 正在更新,直到作业完成,但我在其他地方找不到相同的计数器。

我怎样才能做到这一点?是否有任何 Java API 可以在另一个应用程序中获取按作业计算的计数器(不在执行 mapreduce 任务的应用程序中)?

我应该查看的任何其他日志或其他文件?

我希望我的要求很明确。

更新:

Hadoop版本:Hadoop 1.0.3-Intel

最佳答案

假设您知道您的工作 ID,您可以通过 ID 查找您的工作(我认为在一段时间内取决于您的集群清理工作历史记录的时间)。

public long getInputGroups(String jobId, Configuration conf) {
Cluster cluster = new Cluster(conf);
Job job = cluster.getJob(JobID.forName(jobId));
Counters counters = job.getCounters();
Counter counter = counters.findCounter("org.apache.hadoop.mapred.Task$Counter","REDUCE_I‌​NPUT_GROUPS");
return counter.getValue();
}

有关更多信息,请参阅 Hadoop:权威指南。

关于java - Hadoop MapReduce 作业 : Get the counter outside of the native jvm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com