zoukankan      html  css  js  c++  java
  • Hadoop Oozie 学习笔记

     Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Pig 任务工作流.同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat.

           Oozie工作流中拥有多个Action,如Hadoop Map/Reuce job,Hadoop Pig job等,所有的Action以有向无环图(DAG Direct Acyclic Graph)的模式部署运行.所以在Action的运行步骤上是有方向的,只能上一个Action运行完成后才能运行下一个Action.

           Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造.

           Oozie工作流中的Action在运程系统运行如(Hadoop,Pig服务器上).一旦Action完成,远程服务器将回调Oozie的接口并通知Action已经完成,这时Oozie又会以同样的方式执行工作流中的下一个Action,直到工作流中所有Action都完成(完成包括失败)

           Oozie工作流中包含可控制的工作流节点(control flow node)和Action节点(action node).

           Control flow node其实可以理解为Oozie的语法,比如可以定义开始(start),结束(end),失败(fail)节点.开始节点就表示从该节点开始运行.同时也提供一种机制去控制工作流的执行过程,如选择(decision),并行(fork),join节点.

           Oozie工作流提供各种类型的Action用于支持不同的需要,如Hadoop Map/Reduce,Hadoop File System,Pig,SSH,HTTP,Email,Java,以及Oozie子流程.Oozie也支持自定义扩展以上各种类型的Action .

           Oozie工作流允许自定义参数,如${inputDir}.

     

     

            WordCount Workflow Example:

            工作流图:

     

            workflow.xml

    Xml代码   收藏代码
    1. <workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">  
    2.     <start to='wordcount'/>  
    3.     <action name='wordcount'>  
    4.         <map-reduce>  
    5.             <job-tracker>${jobTracker}</job-tracker>  
    6.             <name-node>${nameNode}</name-node>  
    7.             <configuration>  
    8.                 <property>  
    9.                     <name>mapred.mapper.class</name>  
    10.                     <value>org.myorg.WordCount.Map</value>  
    11.                 </property>  
    12.                 <property>  
    13.                     <name>mapred.reducer.class</name>  
    14.                     <value>org.myorg.WordCount.Reduce</value>  
    15.                 </property>  
    16.                 <property>  
    17.                     <name>mapred.input.dir</name>  
    18.                     <value>${inputDir}</value>  
    19.                 </property>  
    20.                 <property>  
    21.                     <name>mapred.output.dir</name>  
    22.                     <value>${outputDir}</value>  
    23.                 </property>  
    24.             </configuration>  
    25.         </map-reduce>  
    26.         <ok to='end'/>  
    27.         <error to='end'/>  
    28.     </action>  
    29.     <kill name='kill'>  
    30.         <message>Something went wrong: ${wf:errorCode('wordcount')}</message>  
    31.     </kill/>  
    32.     <end name='end'/>  
    33. </workflow-app>  

     

          同时自己成org.myorg.WordCount这个Hadoop Map/Reduce Job,网上搜索一大把.

    配置打包后通过OozieClient提交给Hadoop就直接可以运行了.

  • 相关阅读:
    [macOS] git忽略所有的.DS_Store文件
    [macOS] finder变慢提速
    [React Native] change port when running react native
    转载: 我如何使用 Django + Vue.js 快速构建项目
    MySQL Connector/NET 使用小结(踩坑之路)
    C# 控制台程序(Console Application )启动后隐藏
    解决 pycharm can not save setting
    ubuntu 16.04 LTS 安装 teamviewer 13

    Python 编程规范梳理
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3233717.html
Copyright © 2011-2022 走看看