Oozie Pig动作停留在PREP状态,作业处于RUNNING状态

时间:2015-06-09 09:40:12

标签: hadoop workflow apache-pig oozie

我想运行一个简单的工作流程,但每次提交作业时它都会陷入PREP状态。在这里,我试图从文本文件中读取逗号分隔的值并在屏幕上打印它们。我正在使用以下属性文件,工作流文件和脚本文件。

环境:
Hadoop:2.6.0(1个namenode和2个datanode)
Oozie:4.1.0
猪:0.14.0

这是我的属性文件:
 `

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
<property>
        <name>nameNode</name>
        <value>hdfs://<IP/aliasname>:<port></value>
</property>
<property>
        <name>jobTracker</name>
        <value><IP/aliasname>:<port></value>
</property>
<property>
        <name>oozie.libpath</name>
        <value><path/to/pig/jars></value>
</property>
<property>
        <name>oozie.wf.application.path</name>
        <value><path/to/workflow app/in hdfs></value>
</property>
</configuration>

`

这是我的工作流程:

    <workflow-app name="samplewrokflow" xmlns="uri:oozie:workflow:0.2">
    <start to="TestJob"/> 
    <action name="TestJobR">
        <pig>
            <job-tracker><IP/alias name>:<port></job-tracker>
            <name-node>hdfs://<IP/alias name>:<port></name-node>
            <script><Path/to/pig/script></script>
        </pig>
         <ok to="success"/> 
            <error to="fail"/>  
   </action>
  <kill name="fail"> 
       <message>The Identity Map-Reduce job failed!</message> 
   </kill>
  <end name="success"/>
</workflow-app>

这是我的猪脚本:

DATA = LOAD 'path/to/sample.txt' USING PigStorage(',') as (name1:chararray,name2:chararray,number:int);DUMP DATA;

这是我在sample.txt中的内容:
ABC,XYZ,1

用于运行作业的命令:

oozie job --oozie http://<IP address>:<port>/oozie -config <path/to/configuration file> -run

运行此命令后,我从屏幕上获取作业ID。

这是我的oozie工作日志:

2015-06-08 10:58:56,814  INFO ActionStartXCommand:543 - SERVER[pal-hadoop1.cloudapp.net] USER[hadoop1] GROUP[-] TOKEN[] APP[WorkFlow_R] JOB[0000026-150603135220320-oozie-oozi-W] ACTION[0000026-150603135220320-oozie-oozi-W@:start:] Start action [0000026-150603135220320-oozie-oozi-W@:start:] with user-retry state : userRetryCount [0], userRetryMax [0], userRetryInterval [10]

2015-06-08 10:58:56,815  INFO ActionStartXCommand:543 - SERVER[pal-hadoop1.cloudapp.net] USER[hadoop1] GROUP[-] TOKEN[] APP[WorkFlow_R] JOB[0000026-150603135220320-oozie-oozi-W] ACTION[0000026-150603135220320-oozie-oozi-W@:start:] [***0000026-150603135220320-oozie-oozi-W@:start:***]Action status=DONE

2015-06-08 10:58:56,815  INFO ActionStartXCommand:543 - SERVER[pal-hadoop1.cloudapp.net] USER[hadoop1] GROUP[-] TOKEN[] APP[WorkFlow_R] JOB[0000026-150603135220320-oozie-oozi-W] ACTION[0000026-150603135220320-oozie-oozi-W@:start:] [***0000026-150603135220320-oozie-oozi-W@:start:***]Action updated in DB!

当我使用作业ID获取信息时,它表明该作业始终处于PREP状态。

我使用猪独立执行脚本,它工作正常。

我在hdfs结构中的工作流目录:

oozie-wf/pigscript.pig   
oozie-wf/workflow.xml  
oozie-wf/sample.txt  
oozie-wf/lib (Contains all pig jar files)

你能告诉我这里可能存在什么问题,因为我无法纠正这一点吗?如果您需要更多详细信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

我认为这是因为群集上的容器数量很少。纱线上有多少个容器?简单地说,需要一个容器用于oozie,休息是运行这项工作。可能猪也可能拿着一个容器,虽然我不确定。如果容器不足以执行作业,它将保持在PREP状态。

答案 1 :(得分:0)

增加nodemanager的总内存大小(或)使用yarn-site.xml中的以下属性减少容器默认大小

 <property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>12288</value>
  </property>

 <property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>2048</value>
  </property>
  <property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>6144</value>
  </property>

如果您的箱子容器位置较低!!使用上面的修复!!或者找到oozie日志或纱线记录它的状态。