我想运行一个简单的工作流,但每次提交作业时它都会卡在prep状态。在这里,我试图从文本文件中读取逗号分隔的值,并在屏幕上打印它们。为此,我使用以下属性文件,工作流文件和脚本文件。
环境:
hadoop:2.6.0(1个namenode和2个datanode)
奥齐: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>
这是我的Pig剧本:
DATA = LOAD 'path/to/sample.txt' USING PigStorage(',') as (name1:chararray,name2:chararray,number:int);DUMP DATA;
这是我在sample.txt中的内容:
,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获取信息时,它显示作业始终处于准备状态。
我用pig独立执行脚本,效果很好。
hdfs结构中的我的工作流目录:
oozie-wf/pigscript.pig
oozie-wf/workflow.xml
oozie-wf/sample.txt
oozie-wf/lib (Contains all pig jar files)
你能告诉我这里有什么可能的问题,因为我不能从我这边纠正它吗?如果你需要更多的细节请告诉我。
2条答案
按热度按时间yptwkmov1#
增加nodemanager的总内存大小(或使用yarn-site.xml上的以下属性减少容器默认大小)
如果你的箱子的货柜位太少!!使用上述修复!!或者找到oozie日志或Yarn日志它的状态。
ejk8hzay2#
我认为这是因为集群上的容器数量较少。你们有多少集装箱装Yarn?简单地说,oozie占用了一个容器,其余的都需要运行作业。也许Pig也可能持有一个容器,虽然我不确定这一点。如果容器不足以执行作业,它将保持在prep状态。