我需要在oozie 中的workflow.xml 和job.properties 中提供配置吗?

Posted

技术标签:

【中文标题】我需要在oozie 中的workflow.xml 和job.properties 中提供配置吗?【英文标题】:Do I need to provide configuration in workflow.xml and job.properties in oozie? 【发布时间】:2014-02-11 08:42:27 【问题描述】:

我正在尝试运行如下所示的作业 (workflow.xml)

<workflow-app name="FirstWorkFlow" xmlns="uri:oozie:workflow:0.2">
    <start to="FirstJob"/> 
    <action name="FirstJob">
        <pig>
            <job-tracker>hadoop1:50300</job-tracker>
            <name-node>hdfs://hadoop1:8020</name-node>
            <script>lib/FirstScript.pig</script>
        </pig>
        <ok to="end"/>
        <error to="kill"/>
    </action>
    <kill name="kill">
        <message>Action failed, error message[$wf:errorMessage(wf:lastErrorNode())]</message>
    </kill>
    <end name="end" />    
</workflow-app>

第一脚本:

dual = LOAD 'default.dual' USING org.apache.hcatalog.pig.HCatLoader();
store dual into '/user/oozie/dummy_file.txt' using PigStorage();

job.properties:

nameNode=hdfs://hadoop1:8020
jobTracker=hadoop1:50300
oozie.wf.application.path=/user/oozie/FirstScript
oozie.use.system.libpath=true

我的问题是:我需要在 job.properies 和 workflow.xml 中都提供 nameNode 和 jobTracker 配置吗?

我很困惑,因为无论我是否设置了这些参数,我都会收到这个错误(来自hue界面的错误):

E0902: Exception occured: [Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException: Connection refused]

问候 帕维尔

【问题讨论】:

尝试将 job.properties 更改为:oozie.wf.application.path=hdfs://hadoop1:8020/user/oozie/FirstScript 默认情况下,大部分 Jobtracker 在 8021 上运行。同时尝试将您尝试的 jobtracker URL 放在浏览器中以查看响应。例如:http://hadoop1:50030 主机名最好是hostname -f 输出 【参考方案1】:

首先回答您关于job.properties 的问题 - 它用于对工作流程进行参数化(流程中的变量被替换为job.properties 中指定的值)。所以你可以在job.properties中设置job tracker和namenode,并使用workflow.xml中的变量,也可以直接在workflow.xml中设置。

您确定您的 Job Tracker 的端口是 50300?这似乎有两个原因:通常,可以通过 http://ip:50030 访问作业跟踪器的 Web UI,但这不是您应该用于此配置的端口。对于 Hadoop 作业配置,作业跟踪器端口通常为 802190018012

看来您的问题在于设置 正确 作业跟踪器和名称节点(而不是将其设置在正确的位置)。尝试在mapred-site.xmlcore-site.xml 中检查您的Hadoop 设置以获取正确的端口和IP。或者,您可以简单地通过 SSH 连接到运行 Hadoop 节点的机器并运行 netstat -plnt 并查找此处提到的端口。

【讨论】:

【参考方案2】:

我发现您在 namenode 和 jobtracker 中指定的端口有所不同。只需检查您在 mapred-site.xml 和 core-site.xml 中配置的内容并放置适当的端口即可。

还有可能是 hadoop1 主机名没有得到解析。尝试添加服务器的 IP 地址或将 hadoop1 放在 /etc/hosts 文件中。

您定义属性文件,以便可以对工作流进行参数化。

【讨论】:

【参考方案3】:

尝试使用默认端口 9000。否则我们需要查看 Hadoop 配置文件。

【讨论】:

以上是关于我需要在oozie 中的workflow.xml 和job.properties 中提供配置吗?的主要内容,如果未能解决你的问题,请参考以下文章

Oozie调用Spark实例

OOZIE HIVE 操作 - workflow.xml 属性不会传递给子任务

oozie 作业失败并出现错误 JA009:错误的 conf 文件

Oozie-自定义实现WorkFlow中shell action

OOzie Shell -Impala 操作 XML 错误

Oozie提交作业总结