【问题标题】:Get oozie job information in oozie workflow在 oozie 工作流中获取 oozie 工作信息
【发布时间】:2018-01-12 06:39:36
【问题描述】:

通过在命令行中使用以下命令,我们可以获取 oozie 作业的作业详细信息,即使它仍在进行中。

export OOZIE_URL=http://..../oozie
oozie job -info 0177204-172227110941438-oozie-oozi-W

正在运行 oozie 工作流,在最后一个 shell 操作中,我试图将作业信息详细信息捕获到文件中。

job.sh
------------
job_id=${1}

export OOZIE_URL=http://..../oozie
oozie job -info job_id >> /tmp/job_id.txt

但是上面的命令不起作用。有没有办法,我们如何在正在运行的 oozie 作业中获取作业信息详细信息,并将其存储在文本文件中。

【问题讨论】:

  • “脚本不工作” > 这是什么意思?您是否收到 Oozie 错误,即 Action 的 YARN 日志中的 shell 语法错误?还是只是不知道在哪里可以找到在随机集群节点上创建的文件?
  • 脚本正在运行,除了命令“oozie job -info $job_id >> /tmp/job_id.txt”并且没有抛出任何错误。当我对文件执行 cat 时,它是空的。其他语句在脚本中的工作位置。
  • 您是否也尝试捕获stderr?您是否检查了 YARN 日志中的 shell 语法错误(例如 Oozie 客户端未安装在该节点上,或者不在 YARN 设置的 PATH 中,或其他)?换句话说,你有没有做过任何基本的调试??
  • 我也检查了 YARN 日志,没有语法错误,它完全忽略了该语句。除此以外,其余语句消息均已捕获。

标签: shell hadoop oozie


【解决方案1】:

我希望您在可以访问 fetch info/kill/start oozie 作业的集群上运行您的命令。如果是这种情况,那么您的命令应该可以正常工作。我尝试了以下命令,并且能够看到结果。

cluster:~$ oozie job -info job-id -oozie http://gateway-url/oozie/ > a.txt
cluster:~$ cat a.txt

输出是:

Job ID : job-id
------------------------------------------------------------------------------------------------------------------------------------
Workflow Name : workflow-name
App Path      : hdfs://path/to/workflow.xml
Status        : RUNNING
Run           : 0
User          : user-id
Group         : -
Created       : 2018-07-05 22:30 GMT
Started       : 2018-07-05 22:30 GMT
Last Modified : 2018-07-06 05:17 GMT
Ended         : -
CoordAction ID: coordinator-id@410

Actions
------------------------------------------------------------------------------------------------------------------------------------
ID                                        Status    Ext ID                    Ext Status                  Err Code
------------------------------------------------------------------------------------------------------------------------------------
job-id@:start:                            OK        -                         OK                           -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action1                            OK        -                         action2                      -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action2                            OK        -                         OK                           -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action3                            OK        -                         action4                      -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action4                            OK        MR_job_id1                SUCCEEDED                    -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action5                            OK        MR_job_id2                SUCCEEDED                    -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action6                            OK        -                         action7                      -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action7                            OK        MR_job_id3                SUCCEEDED                    -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action8                            OK        MR_job_id4                SUCCEEDED                    -
------------------------------------------------------------------------------------------------------------------------------------
job-id@action9                            RUNNING   MR_job_id5                RUNNING                      -
------------------------------------------------------------------------------------------------------------------------------------ 

【讨论】:

  • 我知道这会起作用。该命令包含在 shell 脚本中,该脚本在 oozie 工作流中触发,然后它不起作用。我们得到空文件
  • 那么您是否尝试获取与运行此命令的 shell 脚本具有操作之一的同一作业的信息?
  • 是的。假设我在 1 个工作流程中有 10 个操作。当我达到第 10 个动作时,它必须捕获 oozie 中当前作业的所有 9 个应用程序 ID。
  • @a123,你有解决方案吗?我想在 shell 操作中获取当前工作流的开始时间。
【解决方案2】:
  1. 您确定已在集群中的正确节点上检查了结果吗?您可以将其上传到 HDFS 以方便访问:

    hadoop fs -put /tmp/job_id.txt /tmp
    # and then
    hadoop fs -cat hdfs:///tmp/job_id.txt
    
  2. 如果您使用-debug 选项运行oozie job,您可以收集更多调试数据。然后检查 Oozie 生成的 url 是否正确(例如,通过将其粘贴到浏览器)。也许您的 Oozie 网址有问题?

  3. 验证是否正确设置了 shell 脚本的输入参数(作业 ID)。要在 Oozie 工作流程中访问作业 ID,您可以使用 ${wf:id()}

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多