Java MapReduce 计数器 - Oozie

Java MapReduce Counters - Oozie

Java 应用程序在 Hadoop 集群中作为具有单个 Mapper 任务的 map-reduce 作业执行。如果 java mapreduce 作业(不是 hive 或任何其他作业只是一个直接的 mapreduce 作业)是 oozie 的一部分,我们将独立获得一个映射器启动器和实际的 mapreduce 作业 运行s。那么有没有办法 link 启动器和实际的 mapreduce 作业 运行?比如获取实际操作的 jobid 运行 launcher jobid?任何命令知道吗?

您可以访问 oozie UI 并获取此信息。单击您想要的操作并转到 Child Job URLs 选项卡。在那里您可以找到特定操作启动的所有 child 个作业。

java 没有 child 的 oozie 操作 url:

map-reduce oozie 中的操作 child urls 选项卡:

对于 map-rdeuce 作业,您可以访问 Child Job URLs 选项卡并获取所有 child mapreduce 作业 url。

理想的方式是使用oozie客户端javaapi。 API 将帮助您获取工作流 ID,然后您可以从中获取外部 ID,即实际的 hadoop 作业 ID。 参考 this and this .

替代方法 是使用 oozie 客户端 Web 服务 api。这 returns 一个 json 用于特定工作流的整个作业详细信息。然后您可以添加一个 json 解析器以从中提取 externalID 以获得实际的 hadoop 作业 ID。 请参阅 this 以获取现有的网络服务网址。

我们可以从 日志 link 中获取任何子 ID 的启动器 ID,这可以从

中获取
http://<rm httpaddress:port>/ws/v1/history/mapreduce/jobs/<jobid>/jobattempts

我们得到一个 xml,其中包含日志 link。如果我们通过 syslog 中的 link 进行解析,我们将得到一个类似于

的字符串
Service: job_

使用这个正则表达式找出启动器 ID。如果有启动器,那么我们可以从这里获取它。(即使是 oozie 工作流中的 java 操作) 实际行将是这样的

INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Kind: mapreduce.job, Service: <jobid>

Service:之后的jobid是launcher job id