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

标签 java hadoop mapreduce

我是 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/

相关文章:

java - 图片上传问题

sorting - 在 MapReduce 中使用 Partitioner 进行二次排序有什么意义?

hadoop - Mapreduce WordCount 示例给出错误的输出

hadoop - 任何人都可以澄清 HIVE 0.14 上的查询吗

java - Mapreduce 映射器将键和值作为文本字段传递

java - NodeManager 和 ResourceManager 进程未启动

java - 从数组写入可序列化对象

java - Swig 如何定义一个类型映射,将 C 类型定义的 boolean 值转换为 java boolean 值

java - Junit 在我的测试用例中断言 OR 条件

hadoop - 将文件从远程 Unix 和 Windows 服务器复制到 HDFS,无需中间暂存