专栏首页Hadoop实操Azkaban的使用及Command作业创建

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),作者:Fayson

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何升级Cloudera Manager和CDH

    本文档讲述如何升级Cloudera Manager和CDH,通过本文档,您将学习到以下知识:

    Fayson
  • Cloudera Manager首页

    当你从Cloudera Manager进入“主页 -> 状态”时,会看到如下页面,实际也就是Cloudera Manager的主页。

    Fayson
  • 0788-7.1.1-CDP安装SMM服务启动异常

    在CDP7.1.1的安装过程中,添加SMM组件后,配置完数据库信息,启动服务过程中,提示启动Streams Messaging Manager Rest Adm...

    Fayson
  • 高级视频压缩和渲染的高度沉浸式8K+应用程序

    原标题:ADVANCED VIDEO COMPR ESSION AND RENDERING FOR HIGHLY IMMERSIVE 8K+ APPLICATI...

    用户1324186
  • 记一次公司mssql server密码频繁被改的事件

    近期公司服务器mssql密码频繁被改,导致各种业务系统无法连接,报错。昨天来公司,发现4台数据库3台密码都变了。今天尝试着去查查是否能找到问题根源。

    _淡定_
  • Mybatis-Generator_学习_02_使用Mapper专用的MyBatis Generator插件

    (1) MyBatis 通用 Mapper 3. MyBatis Generator 插件

    shirayner
  • 基于catalog 创建RMAN存储脚本

    简言之,将rman的备份恢复命令写成脚本并保存在恢复目录内,恢复目录内的脚本可用性及通用性高于基于文件系统的脚本。

    Leshami
  • RabbitMQ如何实现高可用

    普通集群就是在多台机器上启动多个实例。每个队列只会存在其中的一个实例上,然后所有实例同步这些队列的元数据。消费者在进行消费的时候,如果连接的实例上恰好不是队列所...

    Java学习录
  • PHP函数uasort()在类中的使用问题解决

    zcqshine
  • TCP/IP速记

    OSI是一种设计得非常详细的协议,而问题就是出在详细上;因为实际的情况往往比想象中的更加多变和灵活,所以OSI的详细本该成为它的优势,但却成为了其限制。

    Noneplus

扫码关注云+社区

领取腾讯云代金券