我想运行一个简单的工作流程,但每次提交作业时它都会陷入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)
你能告诉我这里可能存在什么问题,因为我无法纠正这一点吗?如果您需要更多详细信息,请告诉我。
答案 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日志或纱线记录它的状态。