您现在的位置 >> Hadoop教程 >> Hadoop实战 >> 专题  
 

Oozie类似于一个工作流的自动化处理工具

【作者:Hadoop实战专家】【关键词:工作流 进行 工作 】 【点击:75703次】【2013-03-1】
4.如何kill工作流?5.工作流路径如何定义?启始节点的入口工作流程的一个路径。最终控制节点为工作流程工作时,表示工作流任务完成。  

相关热门搜索:

大数据标签:hadoop hdfs mapreduce hive bigdata

问题导读:
1.Oozie是什么?
2.如何定义工作流?
3.如何指定工作流名称?
4.如何kill工作流?
5.工作流路径如何定义?

下面来看下Oozie的运行示意图

1.png (50.89 KB, 下载次数: 0)

  

7 天前 上传

下面是一个Workflow的例子

1. 

3.     

4.     

5.         

6.             ${jobTracker}

7.             ${nameNode}

8.             

9.                 

10.                     mapred.mapper.class

11.                     org.myorg.WordCount.Map

12.                 

13.                 

14.

15.                     mapred.reducer.class

16.                     org.myorg.WordCount.Reduce

17.                 

18.                 

19.                     mapred.input.dir

20.                     ${inputDir}

21.                 

22.                 

23.                     mapred.output.dir

24.                     ${outputDir}

25.                 

26.             

27.         

28.         

29.         

30.     

31.     

32.         Something went wrong: ${wf:errorCode('wordcount')}

33.     

34.     

35. 

复制代码

——这里大家先看看就可以了,后面会给大家详细的讲解

下面给大家讲下如何定义工作流
首先我们要定义一个工作流的启动控制节点
启始节点的入口工作流程的一个路径。
当工作流启动的时候,它会自动的转换为指定的节点。
语法:

1. 

2. ……

3.     ---这里to指的是第一个工作流的执行名称

4. …..

5. 

复制代码

下面给个实例

1. 

2.      ...

3.      

4.      ...

5. 

复制代码

讲完了启动控制节点,那现在也得讲讲最终控制节点了
最终控制节点为工作流程工作时,表示工作流任务完成。
工作流任务完成后最终会成功完成(SUCCEEDED)
语法

1. 

3.      ...

4.      

5.      ...

6. 

复制代码

name指的是这个工作流的作业名称
下面是个例子

1. 

2. ...

3. 

4.      

5.      ...

6. 

复制代码

当然如果workflow出现错误呢,所以我们在Oozie中也可以对控制节点进行Kill
--杀节点允许工作流任务杀死自己
语法:

1. 

2.     ...

3.     

4.         [MESSAGE-TO-LOG]

5.     

6.     ...

7. 

复制代码

——中间表示的是kill掉工作流时候所 返回的值
下面是个例子

1. 

2.     ...

3.     

4.         Inpu        t unavailable

5.     

6.     ...

7. 

复制代码

——中间表示的是kill掉工作流时候所 返回的值

当然有了这些我们还远远不够
下面给大家讲的是
如何给工作流进行选择执行路径可以执行
语法

1. 

2.     ...

3.     

4.         

5.             [PREDICATE]

6.             ...

7.             [PREDICATE]

8.             

9.         

10.     

11.     ...

12. 

复制代码

下面是个例子

1. 

2.     ...

3.     

4.         

5.             

6.               ${fs:fileSize(secondjobOutputDir) gt 10 * GB}

7.             

8.             

9.               ${fs:filSize(secondjobOutputDir) lt 100 * MB}

10.             

11.             

12.               ${ hadoop:counters('secondjob')[RECORDS][REDUCE_OUT] lt 1000000 }

13.             

14.             

15.         

16.     

17.     ...

18. 

复制代码

——假如你有学习过java的话应该会根明白这个意思,其实和java的switch语法差不多,这里就不给大家多讲了

下面是一个fork和 join控制节点
可以执行路径为多个并发的执行路径
另外注意fork和join必须是成对使用
语法:

1. 

2.     ...

3.     

4.         

5.         ...

6.         

7.     

8.     ...

9.     

10.     ...

11. 

复制代码

下面是个实例

1. 

2.     ...

3.     

4.         

5.         

6.     

7.     

8.         

9.             foo:8021

10.             bar:8020

11.             job1.xml

12.         

13.         

14.         

15.     

16.     

17.         

18.             foo:8021

19.             bar:8020

20.             job2.xml

21.         

22.         

23.         

24.     

25.     

26.     ...

27. 

复制代码

下面是一些Oozie工作流的动作节点
下面是Oozie中的关于动作节点的一些总的配置
操作计算/处理总是远程
操作是异步的
行动2转换,= OK =和=误差=
恢复行动

下面给是讲解Oozie中是如何给mapreduce进行自动化调度
--注意 在进行hadoop reduce自动话的时候在工作流中一定不能出现mapred.job.tracker和fs.default.name属性和内嵌配置
语法:

1. 

2.     ...

3.     

4.         

5.             [JOB-TRACKER]

6.             [NAME-NODE]

7.             

8.                 

9.                 ...

10.                 

11.                 ...

12.             

13.             

14.                 [MAPPER-PROCESS]

15.                 [REDUCER-PROCESS]

16.                 [RECORD-READER-CLASS]

17.                 [NAME=VALUE]

18.                 ...

19.                 [NAME=VALUE]

20.                 ...

21.             

22.                         

23.             

24.                 [MAPPER]

25.                 [REDUCER]

26.                 [INPUTFORMAT]

27.                 [PARTITIONER]

28.                 [OUTPUTFORMAT]

29.                 [EXECUTABLE]

30.             

31.             [JOB-XML-FILE]

32.             

33.                 

34.                     [PROPERTY-NAME]

35.                     [PROPERTY-VALUE]

36.                 

37.                 ...

38.             

39.             [FILE-PATH]

40.             ...

41.             [FILE-PATH]

42.             ...

43.                 

44.         

45.     

46.     ...

47. 

复制代码

下面是mapreduce中Oozie对HDFS文件的一些文件的操作

1. 

2.     ...

3.     

4.         

5.             foo:8021

6.             bar:8020

7.             

8.                 

9.             

10.             /myfirstjob.xml

11.             

12.                 

13.                     mapred.input.dir

14.                     /usr/tucu/input-data

15.                 

16.                 

17.                     mapred.output.dir

18.                     /usr/tucu/input-data

19.                 

20.                 

21.                     mapred.reduce.tasks

22.                     ${firstJobReducers}

23.                 

24.                 

25.                     oozie.action.external.stats.write

26.                     true

27.                 

28.             

29.         

30.         

31.         

32.     

33.     ...

34. 

复制代码

下面是个流实例

1. 

2.     ...

3.     

4.         

5.             foo:8021

6.             bar:8020

7.             

8.                 

9.             

10.             

11.                 /bin/bash testarchive/bin/mapper.sh testfile

12.                 /bin/bash testarchive/bin/reducer.sh

13.             

14.             

15.                 

16.                     mapred.input.dir

17.                     ${input}

18.                 

19.                 

20.                     mapred.output.dir

21.                     ${output}

22.                 

23.                 

24.                     stream.num.map.output.key.fields

25.                     3

26.                 

27.             

28.             /users/blabla/testfile.sh#testfile

29.             /users/blabla/testarchive.jar#testarchive

30.         

31.         

32.         

33.     

34.   ...

35. 

复制代码

下面是个管道实例

1. 

2.     ...

3.     

4.         

5.             foo:8021

6.             bar:8020

7.             

8.                 

9.             

10.             

11.                 bin/wordcount-simple#wordcount-simple

12.             

13.             

14.                 

15.                     mapred.input.dir

16.                     ${input}

17.                 

18.                 

19.                     mapred.output.dir

20.                     ${output}

21.                 

22.             

23.             /users/blabla/testarchive.jar#testarchive

24.         

25.         

26.         

27.     

28.   ...

29. 

复制代码

通过前面的一些例子我想大家也对Oozie有一定的了解了,下面讲的是Oozie如何调用pig
注意我们在使用Oozie进行pig自动话一定不能使用Hadoop的mapred.job.tracker和fs.default.name属性一定不能出现在工作xml和内嵌的配置
语法:
Oozie 框架在0.2 pig上进行行动

1. 

2.     ...

3.     

4.         

5.             [JOB-TRACKER]

6.             [NAME-NODE]

7.             

8.                

9.                ...

10.                

11.                ...

12.             

13.             [JOB-XML-FILE]

14.             

15.                 

16.                     [PROPERTY-NAME]

17.                     [PROPERTY-VALUE]

18.                 

19.                 ...

20.             

21.             

22.             [PARAM-VALUE]

23.                 ...

24.             [PARAM-VALUE]

25.             [ARGUMENT-VALUE]

26.                 ...

27.             [ARGUMENT-VALUE]

28.             [FILE-PATH]

29.             ...

30.             [FILE-PATH]

31.             ...

32.         

33.         

34.         

35.     

36.     ...

37. 

复制代码

Oozie 框架在0.1 pig上进行行动

1. 

2.     ...

3.     

4.         

5.             [JOB-TRACKER]

6.             [NAME-NODE]

7.             

8.                

9.                ...

10.                

11.                ...

12.             

13.             [JOB-XML-FILE]

14.             

15.                 

16.                     [PROPERTY-NAME]

17.                     [PROPERTY-VALUE]

18.                 

19.                 ...

20.             

21.             

22.             [PARAM-VALUE]

23.                 ...

24.             [PARAM-VALUE]

25.             [FILE-PATH]

26.             ...

27.             [FILE-PATH]

28.             ...

29.         

30.         

31.         

32.     

33.     ...

34. 

复制代码

当然我们后面还要使用Oozie别的方式去实现pig
比如
Oozie 0.2模式

1. 

2.     ...

3.     

4.         

5.             foo:8021

6.             bar:8020

7.             

8.                 

9.             

10.             

11.                 

12.                     mapred.compress.map.output

13.                     true

14.                 

15.                 

16.                     oozie.action.external.stats.write

17.                     true

18.                 

19.             

20.             

21.             -param

22.             INPUT=${inputDir}

23.             -param

24.             OUTPUT=${outputDir}/pig-output3

25.         

26.         

27.         

28.     

29.     ...

30. 

复制代码

Oozie 0.1模式

1. 

2.     ...

3.     

4.         

5.             foo:8021

6.             bar:8020

7.             

8.                 

9.             

10.             

11.                 

12.                     mapred.compress.map.output

13.                     true

14.                 

15.             

16.             

17.             InputDir=/home/tucu/input-data

18.             OutputDir=${jobOutput}

19.         

20.         

21.         

22.     

23.     ...

24. 

复制代码

下面是Oozie使用的Fs进行自动话调度

1. 

2.     ...

3.     

4.         

5.             

6.             ...

7.             

8.             ...

9.             

10.             ...

11.             

12.             ...

13.             

14.             ...

15.             

16.         

17.         

18.         

19.     

20.     ...

21. 

复制代码

下面是个实例

1. 

2.     ...

3.     

4.          

5.             

6.             

7.             

8.             

9.             

10.         

11.         

12.         

13.     

14.     ...

15. 

复制代码

下面这个是0.4的框架对Oozie进行调度

1. 

2.     ...

3.     

4.         

5.            hdfs://foo:8020

6.            fs-info.xml

7.            

8.              

9.                some.property

10.                some.value

11.              

12.            

13.            

14.         

15.         

16.         

17.     

18.     ...

19. 

复制代码

下面是Oozie对ssh远程的基本操作
语法:

1. 

2.     ...

3.     

4.         

5.             [USER]@[HOST]

6.             [SHELL]

7.             [ARGUMENTS]

8.             ...

9.             

10.         

11.         

12.         

13.     

14.     ...

15. 

16.

复制代码

下面是个实例

1. 

2.     ...

3.     

4.         

5.             foo@bar.com

6.             uploaddata

7.             jdbc:derby://bar.com:1527/myDB

8.             hdfs://foobar.com:8020/usr/tucu/myData

9.         

10.         

11.         

12.     

13.     ...

14. 

复制代码

下面讲的是一个子流程
语法:

1. 

2.     ...

3.     

4.         

5.             [WF-APPLICATION-PATH]

6.             

7.             

8.                 

9.                     [PROPERTY-NAME]

10.                     [PROPERTY-VALUE]

11.                 

12.                 ...

13.             

14.         

15.         

16.         

17.     

18.     ...

19. 

2.     ...

3.     

4.         

5.             child-wf

6.             

7.                 

8.                     input.dir

9.                     ${wf:id()}/second-mr-output

10.                 

11.             

12.         

13.         

14.         

15.     

16.     ...

17. 

复制代码

大数据系列相关文章:

最新评论
中国云计算未来2014-09-10 07:26:45
#前沿资讯#HDInsight通过使用微软和Apache工具让Windows Azure用户可以访问Hadoop。OpenStack的Savanna项目为开源提供商提供了一个选择,但是作为一个不断发展的项目,用户还无法期望得到一个完整的交钥匙解决方案。
素写一世2014-09-10 03:57:49
原来的.regioninfo变成.tmp了
二两醉一宿2014-09-10 02:44:54
早安!
SuperHadoop2014-09-09 03:13:49
#hadoop学习笔记# 唉,写了那么久的hql和udf,终于能自己搭建hadoop和hive了,喵了个咪的,以前都是看着别人搭建。虽然是伪分布,但完全分布也就多了点东西而已,等以后发达了,买100台主机撘撘试试。
Simida2014-09-09 01:37:39
新词识别反正我自己还是再在已经成熟的包上再做条件概率 行业内新词很多想用爬虫是爬不出来的
shinelau2014-09-08 10:14:29
生日快乐,臭老婆。才下班,,,和别人吃饭发照片来气我。老公真吃醋了,,,祝老婆瘦点瘦点再瘦点,,,@某一天开始慢慢成熟的hadoop
2014-09-08 03:25:57
还没出来多久呢,稳定了吗
浪人2014-09-08 03:43:04
hadoop-2.5.0-Linux32-aboutyun.tar.gz 文件大小:297M
常彬_pay2014-09-06 10:35:58
卧槽尼玛哟 youtube一个tutorial教安装hadoop,装了一个小时之后那个人发现程序的folder不在了。。。。这尼玛比打码葫芦娃还坑爹啊。。。
峰少2014-09-05 09:25:27
#招聘#【软通动力信息技术(集团)有限公司】招聘“高级java开发工程师(Hadoop数据挖掘方向)”啦,Hadoop高手看过来,¥10,000 - 20,000投递简历请戳→ http://t.cn/RPsNu1G (分享自 @周伯通招聘)
 
  • Hadoop生态系统资料推荐