前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Azkaban的使用及Command作业创建

Azkaban的使用及Command作业创建

作者头像
Fayson
发布2018-04-18 10:29:34
3.7K0
发布2018-04-18 10:29:34
举报
文章被收录于专栏:Hadoop实操Hadoop实操Hadoop实操

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档