问题同时运行两个Oozie协调器应用程序

时间:2013-12-25 08:12:21

标签: hadoop apache-pig oozie

我是hadoop和oozie的新手。我试图运行两个具有以下细节的协调器实例: CoordinatorOne有一个工作流作业,其中包含单个动作(即java动作)。它以一定的频率全天候运行。当我运行另一个协调员时,说CoordinatorTwo(其中有一个带有单个猪动作的工作流工作),其频率相同,开始时间与CoordinatorOne动作的实现时间一致,第二个协调员行动随机失败(即有时他们成功,有时他们失败)。我已经尝试检查作业的日志,但没有创建日志。当我在命令行上检查oozie操作ID的信息时,我发现了这个错误:

main class [org.apache.oozie.action.hadoop.pigmain], exit code [2]

我无法解决问题。如果有人以前遇到过这类问题,请告诉我。

此外,CoordinatorOne的输出作为输入提供给CoordinatorTwoCoordinatorOne永远不会失败。问题在于CoordinatorTwo,但是当第一个终止时它可以正常工作。

群集详情: 2个节点集群,4个Map,2个减少任务容量 - CentOS VM,每个4GB内存。 Hadoop 2.0.0-cdh4.3.0 Oozie客户端构建版本:3.3.2-cdh4.3.0

PS:如果我错过任何事情,请告诉我。非常感谢!

CoordinatorOne和以下两个定义:

CoordinatorOne:

<coordinator-app xmlns="uri:oozie:coordinator:0.4"  frequency="${frequency}" start="${start}" end="${end}" timezone="UTC" name="CoordinatorOne">

<controls>
    <timeout>3</timeout>
    <concurrency>1</concurrency>
</controls>

<datasets>
    <dataset name="OutputDataset" frequency="${frequency}" initial-instance="${start}" timezone="UTC">
    <uri-template>${namenode}/user/somefolder/Output/Test/${YEAR}/${MONTH}/${DAY}/${HOUR}/${MINUTE}/itemdata</uri-template><done-flag></done-flag>
    </dataset>
</datasets>

<output-events>
    <data-out name="Outputevent" dataset="OutputDataset">
     <instance>${coord:current(0)}</instance>
    </data-out>
 </output-events>



 <action>
    <workflow>
       <app-path>${namenode}/user/somefolder/Input/Workflow</app-path>
       <configuration>
            <property>
                <name>namenode</name>
                <value>${namenode}</value>
            </property>
       <property>
                <name>jobtracker</name>
                <value>${jobtracker}</value>
            </property>
     <property>
                <name>queue_name</name>
                <value>${queue_name}</value>
            </property>
             <property>
                 <name>path</name>
                  <value>${coord:dataOut('Outputevent')}</value>
              </property>

          </configuration>
     </workflow>
 </action>     


</coordinator-app>


   CoordinatTwo:


<coordinator-app xmlns="uri:oozie:coordinator:0.4"  frequency="${frequency}" start="${start}" end="${end}" timezone="UTC" name="CoordinatorTwo">

 <controls>
      <timeout>5</timeout>
       <concurrency>1</concurrency>
  </controls>

 <datasets>
      <dataset name="OutputDataset" frequency="${frequency}" initial-instance="${start}" timezone="UTC">
       <uri-template>${namenode}/user/somefolder/Output/Test/${YEAR}/${MONTH}/${DAY}/${HOUR}/Somedata${MINUTE}</uri-template>
      <done-flag></done-flag>
       </dataset>
  <dataset name="InputDataset" frequency="${frequencyInput}" initial-instance="${startTimeofInputset}" timezone="UTC">
        <uri-template>${namenode}/user/somefolder/Output/Test/${YEAR}/${MONTH}/${DAY}/${HOUR}/${MINUTE}</uri-template>
   <done-flag></done-flag>
    </dataset>
</datasets>
 <input-events>
    <data-in name="Inputevent" dataset="InputDataset">
      <instance>${coord:current(-1)}</instance>
      </data-in>
  </input-events>   
 <output-events>
    <data-out name="Outputevent" dataset="OutputDataset">
        <instance>${coord:current(0)}</instance>
    </data-out>
 </output-events>

  <action>
    <workflow>
     <app-path>${namenode}/user/somefolder/Input/WorkflowItem</app-path>
       <configuration>
            <property>
                <name>namenode</name>
                <value>${namenode}</value>
            </property>
       <property>
                <name>jobtracker</name>
                <value>${jobtracker}</value>
            </property>
     <property>
                <name>queue_name</name>
                <value>${queue_name}</value>
            </property>
            <property>
                    <name>Inputpath</name>
                    <value>${coord:dataIn('Inputevent')}</value>
                  </property>
             <property>
                    <name>Outputpath</name>
                    <value>${coord:dataOut('Outputevent')}</value>
                  </property>

           </configuration>
     </workflow>
 </action>     

`

1 个答案:

答案 0 :(得分:0)

  

CoordinatorOne的输出作为输入提供给CoordinatorTwo

确保CoordinatorTwo等待其输入 - 请参阅示例here(“数据目录可用时触发协调器作业”)。如果输入不存在或不完整,猪的动作可能会失败(参见猪日志确认)。