温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
Fayson的github:https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
前面Fayson介绍了《如何编译安装Azkaban服务》和《如何编译Azkaban插件》、《如何在Azkaban中安装HDFS插件以及与CDH集成》及《如何在Azkaban安装插件(二)》,本篇文章主要通过Command 作业类型示例介绍如何使用Azkaban。
1.Command Job Type
2.创建工作流
测试环境
1.Redhat7.2
2.使用root用户操作
3.Azkaban版本为3.43.0
2.Command Job Type
Command作业类型是基本的内置类型之一,它使用Java Processbuilder运行多个Unix命令,接下来我们通过一个示例来说明如何创建Command类型的业。示例流程如下:
该流程的flowb作业依赖flowa作业,只有在flowa作业执行成功后才会执行flowb作业,如下是具体实现脚本:
1.在本地创建flowa.job文件,内容如下:
#command
type=command
command=sh test.sh
user.to.proxy=fayson
(可左右滑动)
定义作业类型为command,作业运行的脚本为test.sh,user.to.proxy为指定运行作业的用户为fayson,在Fayson前面的文章《如何在Azkaban安装插件(二)》中配置了使用代理用户运行作业,而在Azkaban中默认root和azkaban用户默认是不允许执行作业的。
2.在本地创建test.sh脚本文件,内容如下:
#!/bin/sh
echo 'flowa job!!!' > /tmp/test.log
(可左右滑动)
覆盖的方式向/tmp/test.log文件中写入“flowa job!!!”。
3.在本地创建flowb.job文件,内容如下:
#command
type=command
command=sh test2.sh
dependencies=flowa
user.to.proxy=fayson
(可左右滑动)
在flowb.job文件中,我们需要注意的是dependencies参数,指定了flowa作业的文件名但不需要指定”.job”的后缀,配置该参数则表明flowb作业依赖flowa作业,只有在flowa作业执行成功后才会执行flowb作业。
4.在本地创建test2.sh文件,内容如下:
#!/usr/bin/env bash
echo 'flowb job!!!' >> /tmp/test.log
(可左右滑动)
已追加的方式向/tmp/test.log文件中写入“flowb job!!!”。
5.将如上创建的4个文件放入shelldemo文件夹中
将shelldemo文件夹压缩为zip包
3.创建工程并上传工程
1.登录Azkaban Web界面,并创建shelldemo工程
点击“Create Project”,输入工程名称及描述信息
点击“Create Project”创建工程
2.进入shelldemo工程,点击“Upload”按钮上传shelldemo.zip压缩包
注意:目前Azkaban只支持Zip压缩包,该zip中包含所有*.job文件和运行作业所需要的文件,作业名称在项目中必须唯一。
上传成功后显示如下:
4.运行工程的工作流
1.点击“Execute Flow”运行工程下所有的flow
进入运行Flow flowb界面,在该界面可以设置”Notification”、”Failure Options”、”Concurrent”、”Flow Parameters”及设置Flow的定时任务。
说明:
Notification:修改工作流运行成功或失败通知的邮件地址,通知方式分为检查到运行失败的job即发送邮件或工作流有失败的作业则在作业运行完成后发送。可选择是否覆盖默认的邮件通知列表,如果选择覆盖则可以在输入框中输入新的邮件地址已逗号、空格或分号分割。
Failure Options:当工作流中有失败的作业时,我们可以通过设置该参数控制剩余作业的执行方式。Finish Current Running 完成当前正在运行的作业且不会执行新的作业,将该工作流设置为FAILED FINISHING状态,一旦当前正在运行的作业完成就会将该工作流设置为FAILED状态。Cancel All 立即终止所有正在运行的作业并将工作流状态设置为FAILED。Finish All Possible 只要满足依赖关系就会在工作流中继续执行作业,该工作流处于FAILED FINISHING状态,一旦所有满足依赖关系的作业执行完成,就会设置工作流状态为FAILED。
Concurrent Options:并发执行选项。
Flow Parameters:添加临时工作流参数用于工作流中的每个作业。
点击“Execute”,进入作业提交界面显示作业执行的id
点击“Continue”,进入作业运行结果界面
点击“Job List”查看Flow Execution的所有job
点击“Details”可以查看每个job的运行日志,对运行失败的job可以通过日志分析失败原因等
5.创建复杂工作流
创建一个复杂工作流,具体流程如下:
1.创建flowa.job文件,内容如下:
#command
type=command
command=sh test.sh
user.to.proxy=fayson
(可左右滑动)
2.创建flowb.job文件,内容如下:
#command
type=command
command=sh test2.sh
dependencies=flowa
user.to.proxy=fayson
(可左右滑动)
3.创建flowc.job文件,内容如下:
#command
type=command
command=sh test2.sh
dependencies=flowa
user.to.proxy=fayson
(可左右滑动)
4.创建flowd.job文件,内容如下:
#command
type=command
command=sh test2.sh
user.to.proxy=fayson
dependencies=flowb,flowc
(可左右滑动)
使用到的test.sh和test2.sh脚本为文章第二章节的脚本,将创建的所有*.job及作业运行所需要的shell脚本压缩为zip文件,上传至Azkaban已存在的工程中即可。
6.创建内嵌工作流
创建一个包含子工作流的流程,具体流程如下截图:
1.在本地创建flowa.job文件,内容如下:
#command
type=command
command=sh test.sh
user.to.proxy=fayson
(可左右滑动)
2.在本地创建flowb.job文件,内容如下:
#command
type=command
command=sh test2.sh
dependencies=flowa
user.to.proxy=fayson
(可左右滑动)
3.在本地创建flowc.job文件,内容如下:
#command
type=command
command=sh test2.sh
dependencies=flowa
user.to.proxy=fayson
(可左右滑动)
4.在本地创建flowe.job文件,内容如下:
#command
type=flow
flow.name=innerc
dependencies=flowa
(可左右滑动)
5.在本地创建flowf.job文件,内容如下:
#command
type=command
command=sh test2.sh
user.to.proxy=fayson
dependencies=flowb,flowc,flowe
(可左右滑动)
6.在本地创建innera.job文件,内容如下:
#command
type=command
command=sh test2.sh
user.to.proxy=fayson
(可左右滑动)
7.在本地创建innerb.job文件,内容入下:
#command
type=command
command=sh test2.sh
user.to.proxy=fayson
(可左右滑动)
8.在本地创建innerc.job文件,内容如下:
#command
type=command
command=sh test2.sh
user.to.proxy=fayson
dependencies=innera,innerb
(可左右滑动)
使用到的test.sh和test2.sh脚本为文章第二章节的脚本,将创建的所有*.job及作业运行所需要的shell脚本压缩为zip文件,上传至Azkaban已存在的工程中即可。
GitHub示例代码地址如下:
https://github.com/fayson/cdhproject/tree/master/azkaban-demo/command
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。