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)

您能告诉我这里可能出现的问题是什么,因为我无法从我这边纠正它吗?如果您需要更多详细信息,请告诉我。

【问题讨论】:

我假设 &lt;start to="TestJob"/&gt; 应该是 &lt;start to="TestJobR"/&gt; @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。此属性值能否显示集群的容器槽数较低? 请将配置设置为 yarn.nodemanager.resource.memory-mb12288 yarn.scheduler.minimum-allocation-mb2048yarn.scheduler.maximum-allocation-mb6144 value> 试试看!!!答案已根据您的配置进行编辑,只需替换并尝试。

以上是关于Oozie Pig 动作卡在 PREP 状态,作业处于 RUNNING 状态的主要内容,如果未能解决你的问题,请参考以下文章

从 oozie 提交猪作业

oozie 常用命令

转Oozie4.2.0配置安装实战

在 oozie shell 动作中运行 pig

sqoop 作业将数据导出到 mysql,卡在地图 100% 且状态正在运行

从 oozie 以本地模式运行 PIG