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

时间:2014-02-11 08:42:28

标签: hadoop apache-pig oozie

我正在尝试运行这样的工作(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>

FirstScript:

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]

此致 的Pawel

3 个答案:

答案 0 :(得分:2)

首先回答关于job.properties的问题 - 它用于参数化工作流程(流程中的变量将替换为job.properties中指定的值)。因此,您可以在job.properties中设置作业跟踪器和namenode,并使用workflow.xml中的变量,或者您可以直接在workflow.xml中设置它。

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

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

答案 1 :(得分:0)

我看到你在namenode和jobtracker中指定的端口有所不同。只需检查您在mapred-site.xml和core-site.xml中配置的内容,然后输入相应的端口。

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

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

答案 2 :(得分:0)

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