OOZIE REST API 重新运行 - 启动作业功能不起作用
您好,我想启动 Oozie 的作业抛出 REST API(CDH 5.3.1 中的 Oozie 版本 4.0.0),但该作业无法启动或重新运行。
通过 Google 的 ADVANCED REST API,我推出了:
PUT {namenode}:11000/oozie/v1/job/0000001-150528075707705-oozie-oozi-W?action=start
结果是:
200 OK
响应不包含任何数据。
但工作流程的工作并未开始。
然后我尝试启动
PUT  {namenode}:11000/oozie/v1/job/0000001-150528075707705-oozie-oozi-W?action=rerun
结果是:
500 Internal Server Error
Apache Tomcat/6.0.41 - 错误报告
类型异常报告
消息org.xml.sax.SAXParseException;文件提前结束。
描述服务器遇到内部错误,无法满足此请求。
例外
java.io.IOException: org.xml.sax.SAXParseException; 文件提前结束。
    org.apache.oozie.util.XConfiguration.parse(XConfiguration.java:253)
    org.apache.oozie.util.XConfiguration.<init>(XConfiguration.java:63)
    org.apache.oozie.servlet.BaseJobServlet.doPut(BaseJobServlet.java:114)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:730)
    org.apache.oozie.servlet.JsonRestServlet.service(JsonRestServlet.java:287)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    org.apache.oozie.servlet.AuthFilter$2.doFilter(AuthFilter.java:154)
    org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:592)
    org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:555)
    org.apache.oozie.servlet.AuthFilter.doFilter(AuthFilter.java:159)
    org.apache.oozie.servlet.HostnameFilter.doFilter(HostnameFilter.java:84)
根本原因
org.xml.sax.SAXParseException; 文件提前结束。
    org.apache.xerces.parsers.DOMParser.parse(来源未知)
    org.apache.xerces.jaxp.DocumentBuilderImpl.parse(来源未知)
    javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
    org.apache.oozie.util.XConfiguration.parse(XConfiguration.java:248)
    org.apache.oozie.util.XConfiguration.<init>(XConfiguration.java:63)
    org.apache.oozie.servlet.BaseJobServlet.doPut(BaseJobServlet.java:114)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:730)
    org.apache.oozie.servlet.JsonRestServlet.service(JsonRestServlet.java:287)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    org.apache.oozie.servlet.AuthFilter$2.doFilter(AuthFilter.java:154)
    org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:592)
    org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:555)
    org.apache.oozie.servlet.AuthFilter.doFilter(AuthFilter.java:159)
    org.apache.oozie.servlet.HostnameFilter.doFilter(HostnameFilter.java:84)
note Apache Tomcat/6.0.41 日志中提供了根本原因的完整堆栈跟踪。
该作业位于 HDFS 上,其余命令为:
GET {namenode}:11000/oozie/v1/job/0000001-150528075707705-oozie-oozi-W?show=info
工作正常。答案是:
200 OK
{
appPath: "hdfs://{namenode}/user/hue/oozie/workspaces/_yarn_-oozie-57-1432735905.63"
acl: null
status: "SUCCEEDED"
createdTime: "Thu, 28 May 2015 15:34:37 GMT"
conf ......
使用 API Rest 重新运行或启动与 Oozie 中工作流相关的作业的最简单方法是什么?根据官方文档中的建议,这项工作不起作用:
提前致谢。
塞巴斯蒂亚诺。
PUT 对于重新运行来说似乎是正确的。然而,它还需要为两个属性之一提供 XML
<?xml version="1.0" encoding="UTF-8"?><configuration><property> <name>oozie.wf.rerun.failnodes</name> <value>false</value> </property></configuration>
或者
<?xml version="1.0" encoding="UTF-8"?><configuration><property> <name>oozie.wf.rerun.skip.nodes</name> <value>,</value> </property></configuration>
这些决定了哪些节点重新运行或跳过。