javamapreduce计数器-oozie

f3temu5u  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(299)

java应用程序在hadoop集群中作为map reduce作业与单个mapper任务一起执行。如果一个javamapreduce作业(不是hive或任何其他作业只是一个直接的mapreduce作业)是oozie的一部分,那么我们将得到一个单独的mapper启动器,而实际的mapreduce作业将独立运行。那么,有没有办法将启动程序与实际的mapreduce作业运行联系起来呢?比如用启动器jobid获取实际操作的jobid?有命令要知道吗?

c7rzv4ha

c7rzv4ha1#

你可以去oozie用户界面获取这些信息。单击所需的操作并转到 Child Job URLs 选项卡。在那里你可以找到所有的儿童工作启动的具体行动。 java 没有子url的oozie中的操作:
map-reduce oozie的子URL选项卡中的操作:

对于Map减少作业,您可以访问 Child Job URLs 选项卡并获取所有子mapreduce作业URL。

lmvvr0a8

lmvvr0a82#

理想的方法是使用oozie客户机javaapi。api将帮助您获得工作流id,然后您可以从中获得外部id,即实际的hadoop作业id。
另一种方法是使用oozie客户机web服务api。这将返回特定工作流的整个作业详细信息的json。然后您可以添加一个json解析器,从中提取externalid以获得实际的hadoop作业id。

bqucvtff

bqucvtff3#

我们可以从logs链接获取任何子id的启动程序id,该链接可以从

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

这里我们得到一个包含logs链接的xml。如果我们通过链接中的syslog进行解析,我们会得到一个类似

Service: job_

使用这个正则表达式并找出启动程序id。如果有启动程序,那么我们可以从这里获得它(甚至对于oozie工作流中的java操作),实际的行是这样的

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

之后的jobid Service: 是启动器作业id

相关问题