【问题标题】:400 Bad Request executing oozie job400 错误请求正在执行 oozie 作业
【发布时间】:2019-03-06 10:31:34
【问题描述】:

我正在尝试通过其 Web 服务 API (Oozie 4.1.0-cdh5.15.2) 执行 Oozie 作业。之前这个作业是通过 Oozie 命令行 API 成功执行的,并且大部分参数都是作为命令参数提供的。

workflow.xml 当前位于 HDFS 上,因此我只是尝试以 XML 格式发送作业属性,因为它在 documentation 中指定:

POST /oozie/v1/jobs
Content-Type: application/xml;charset=UTF-8
.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property>
        <name>oozie.use.system.libpath</name>
        <value>true</value>
    </property>
    <property>
        <name>oozie.credentials.skip</name>
        <value>true</value>
    </property>
    <property>
        <name>oozie.wf.application.path</name>
        <value>hdfs://myownhdfs.com:8020/path/to/oozie/workflow/workflow.xml</value>
    </property>
    <property>
        <name>jobTracker</name>
        <value>myownhdfs.com:8032</value>
    </property>
    <property>
        <name>nameNode</name>
        <value>hdfs://myownhdfs.com:8020</value>
    </property>
    <property>
        <name>customScripts</name>
        <value>/nfs/path/to/scripts</value>
    </property>
</configuration>

我的工作流.xml

<?xml version="1.0" encoding="UTF-8"?>
<workflow-app
        xmlns="uri:oozie:workflow:0.5"
        name="wf-check">
    <global>
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
    </global>
    <start to="py-check" />
    <action name="py-check">
        <python xmlns="uri:oozie:custom-python-action:0.1">
            <custom-scripts>${customScripts}</custom-scripts>
            <script>foo/bar/myscript.py</script>
            <debug-sleep-begin>0</debug-sleep-begin>
            <debug-sleep-end>0</debug-sleep-end>
            <log-level>DEBUG</log-level>
            <capture-output />
        </python>
        <ok to="end" />
        <error to="fail" />
    </action>
    <kill name="fail">
        <message>Python failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end" />
</workflow-app>

但是我只收到 400 Bad Request: The request sent by the client was syntaxly wrong..

有没有人有提示,我可能做错了什么?

【问题讨论】:

    标签: hadoop oozie cloudera-cdh oozie-workflow


    【解决方案1】:

    我使用 curl 执行了相同的请求(之前我使用 java 的 URLConnection 进行测试)并在响应中找到了 2 个标头,这些标头提供了有关错误的更多有用信息:oozie-error-codeoozie 错误消息。第二个也包含错误代码,因此无需同时记录它们。

    HTTP/1.1 400 Bad Request
    ...
    oozie-error-code: E0504
    oozie-error-message: E0504: App directory [/foo/bar] does not exist
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多