Azkaban的使用及Command作业创建

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

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干货,欢迎转发和分享。

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-03-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏禅林阆苑

Webpack学习总结 【原创】

Webpack学习总结 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/...

448130
来自专栏大数据挖掘DT机器学习

Python使用pyQuery解析HTML内容

pyQuery 是 jQuery 的Python实现,如果对Web前端有了解,特别是有用过 jQuery 的,那么 pyQuery 将会是你处理HTML内容的最...

432100
来自专栏csxiaoyao

Webpack学习总结

WebPack : 模块化解决方案(模块打包机),能够分析项目结构,找到JavaScript模块及浏览器不能直接运行的拓展语言(Scss,TypeScript等...

52560
来自专栏晓晨的专栏

IdentityServer(13)- 添加JavaScript客户端

31840
来自专栏互扯程序

跨域请求方案 终极版

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

42130
来自专栏BIT泽清

React Native应用部署/马甲包热更新-CodePush最新集成总结(2018年最新)

React Native支持大家用React Native技术开发APP,并打包生成一个APP。在动态更新方面React Native只是提供了动态更新的基础,...

41500
来自专栏Java帮帮-微信公众号-技术文章全总结

使用Crontab定时执行Spark任务【面试+工作】

第一个“#”表示是这一行是注释 第二个“!”表示这一行不是普通注释,而是解释器路径的声明行 后面的“/usr/bin/perl”是perl解释器的安装路径,...

46920
来自专栏程序员同行者

ssh升级

30410
来自专栏建站达人秀

如何在 Windows 上搭建 PHP 网站

PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HT...

3.5K30
来自专栏Hadoop实操

如何迁移Kudu1.2的WAL和Data目录

在Kudu配置的WAL和Data路径与其他服务(如NameNode、DataNode等)共用一块磁盘的情况下(可能会产生磁盘空间不足或者IO争用),需要将WAL...

43180

扫码关注云+社区

领取腾讯云代金券