Oozie Pig 动作卡在 PREP 状态,作业处于 RUNNING 状态
Posted
技术标签:
【中文标题】Oozie Pig 动作卡在 PREP 状态,作业处于 RUNNING 状态【英文标题】:Oozie Pig action stuck in PREP state and job is in RUNNING state 【发布时间】:2015-06-09 09:40:12 【问题描述】:我想运行一个简单的工作流程,但每次我提交作业时它都会卡在 PREP 状态。在这里,我试图从以逗号分隔的文本文件中读取值并将它们打印在屏幕上。为此,我正在使用以下属性文件、工作流文件和脚本文件。
环境: Hadoop:2.6.0(1 个名称节点和 2 个数据节点) 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 状态。
我使用 pig 独立执行了脚本,它运行良好。
我在 hdfs 结构中的工作流目录:
oozie-wf/pigscript.pig
oozie-wf/workflow.xml
oozie-wf/sample.txt
oozie-wf/lib (Contains all pig jar files)
您能告诉我这里可能出现的问题是什么,因为我无法从我这边纠正它吗?如果您需要更多详细信息,请告诉我。
【问题讨论】:
我假设<start to="TestJob"/>
应该是 <start to="TestJobR"/>
?
@Fred 感谢您的发现.. 但是按照您从 TESTJob 到 TestJobR 所说的进行更正后,我仍然面临同样的问题。
您是否将所有路径指定为绝对路径?你确定 namenode 和 jobtracker 的地址/端口是正确的吗?
您的 MapReduce 集群有多少个地图槽?
@Fred - 是的!我将所有路径指定为绝对路径。请考虑以下内容:oozie libpath: /user/oozie/share/lib/lib_20150505120506/pig 工作流路径: /user/wf/oozie-wf/Workflow_R.xml 脚本路径: /user/wf/oozie-wf/Pigscript_R.pig jobtracker: 运行job tracker的ip地址和端口
【参考方案1】:
我认为这是因为集群上的容器数量很少。你在纱线上有多少个容器?简单地说,oozie 占用一个容器,运行作业需要休息。可能猪也可能拿着一个容器,尽管我不确定。如果容器不足以执行作业,它将保持在 PREP 状态。
【讨论】:
yarn-site.xml 是否拥有提供编号信息的属性。容器的名称,如果可以,请您将财产名称还原给我吗?谢谢!【参考方案2】:使用 yarn-site.xml 中的以下属性增加 nodemanager 的总内存大小(或)减少容器默认大小
<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 日志或纱线日志它的状态。
【讨论】:
我是新手,所以我将向您展示我的 yarn-site.xml 中的属性值。这里是, @karthik - 我是新手,所以我对配置参数不太了解,所以我向您展示了我的 yarn-site.xml 中的属性值。这里是 yarn.nodemanager.resource.memory-mb = 12288,yarn.scheduler.minimum-allocation-mb = 2048,yarn.scheduler.maximum-allocation-mb = 12288。此属性值能否显示集群的容器槽数较低? 请将配置设置为以上是关于Oozie Pig 动作卡在 PREP 状态,作业处于 RUNNING 状态的主要内容,如果未能解决你的问题,请参考以下文章