Azkaban简介

Azkaban简介一 Azkaban 概论 1 1Azkaban 是什么 1 Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器 2 主要用于在一个工作流内以一个特定的顺序运行一组工作和流程 它的配置是通过简单的 key value 对的方式 3 通过配置中的 dependencies 来设置依赖关系 这个依赖关系必须是无环的 否则会被视为无效的工作流 4 Azkaban 使用 job 配置文件建立任务之间的依赖关系 并提供一个易于使用的 web 用户界面维护和跟踪你的工作流 1 2 为什么需要工作流调度

目录

 

一、Azkaban概论

1.1  Azkaban是什么?

1.2 为什么需要工作流调度系统

1.3 Azkaban由三个关键组件构成

1.4 常见工作流调度系统

1.5 Azkaban与Oozie对比

二、 Azkaban入门

2.1 集群模式安装

2.1.1 上传tar包

2.1.2 配置MySQL

2.1.3 配置Executor Server

2.1.4 配置Web Server

2.2 Work Flow案例实操

2.2.1 HelloWorld案例

2.2.1 自动失败重试案例


一、Azkaban概论

1.1  Azkaban是什么?

1)Azkaban是由Linkedin公司推出的一个批量工作流任务调度器

2)主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式

3)通过配置中的dependencies 来设置依赖关系,这个依赖关系必须是无环的,否则会被视为无效的工作流。

4)Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

1.2 为什么需要工作流调度系统

1)一个完整的数据分析系统通常都是由大量任务单元组成:

Shell脚本程序,Java程序,MapReduce程序、Hive脚本等

2)各任务单元之间存在时间先后及前后依赖关系

3)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

Azkaban简介

1.3 Azkaban由三个关键组件构成

1、关系型数据库(MySQL): 存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等,AzkabanWebServerAzkabanExecutorServer都需要访问数据库

2、AzkabanWebServer:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,对外提供web服务,使用户可以通过web页面管理。职责包括项目管理、权限授权、任务调度、监控executor

3、AzkabanExecutorServer:负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行

Azkaban简介

 

1.4 常见工作流调度系统

1)简单的任务调度:直接使用Linux的Crontab来定义;

2)复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如Ooize、Azkaban、 Airflow、DolphinScheduler等。

1.5 Azkaban与Oozie对比

对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,Ooize相比Azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器Azkaban是很不错的候选对象。

特性

Hamake

Oozie

Azkaban

Cascading

工作流描述语言

XML

XML (xPDL based)

text file with key/value pairs

Java API

依赖机制

data-driven

explicit

explicit

explicit

是否要web容器

No

Yes

Yes

No

进度跟踪

console/log messages

web page

web page

Java API

Hadoop job调度支持

no

yes

yes

yes

运行模式

command line utility

daemon

daemon

API

Pig支持

yes

yes

yes

yes

事件通知

no

no

no

yes

需要安装

no

yes

yes

no

支持的hadoop版本

0.18+

0.20+

currently unknown

0.18+

重试支持

no

workflownode evel

yes

yes

运行任意命令

yes

yes

yes

yes

Amazon EMR支持

yes

no

currently unknown

yes

在这里插入图片描述

二、 Azkaban入门

2.1 集群模式安装

2.1.1 上传tar包

1)将azkaban-db-3.84.4.tar.gz,azkaban-exec-server-3.84.4.tar.gz,azkaban-web-server-3.84.4.tar.gz上传到hadoop102的/opt/software路径

[@hadoop102 software]$ ll 总用量 35572 -rw-r--r--. 1 6433 4月  18 17:24 azkaban-db-3.84.4.tar.gz -rw-r--r--. 1  4月  18 17:26 azkaban-exec-server-3.84.4.tar.gz -rw-r--r--. 1  4月  18 17:26 azkaban-web-server-3.84.4.tar.gz

2)新建/opt/module/azkaban目录,并将所有tar包解压到这个目录下

[@hadoop102 software]$ mkdir /opt/module/azkaban

3)解压azkaban-db-3.84.4.tar.gz、 azkaban-exec-server-3.84.4.tar.gz和azkaban-web-server-3.84.4.tar.gz到/opt/module/azkaban目录下

[@hadoop102 software]$ tar -zxvf azkaban-db-3.84.4.tar.gz -C /opt/module/azkaban/ [@hadoop102 software]$ tar -zxvf azkaban-exec-server-3.84.4.tar.gz -C /opt/module/azkaban/ [@hadoop102 software]$ tar -zxvf azkaban-web-server-3.84.4.tar.gz -C /opt/module/azkaban/ 

4)进入到/opt/module/azkaban目录,依次修改名称

[@hadoop102 azkaban]$ mv azkaban-exec-server-3.84.4/ azkaban-exec [@hadoop102 azkaban]$ mv azkaban-web-server-3.84.4/ azkaban-web

2.1.2 配置MySQL

1)正常安装MySQL

2)启动MySQL

[@hadoop102 azkaban]$ mysql -uroot -p000000

3)登陆MySQL,创建Azkaban数据库

mysql> create database azkaban;

4)创建azkaban用户并赋予权限

设置密码有效长度4位及以上 mysql> set global validate_password_length=4; 设置密码策略最低级别 mysql> set global validate_password_policy=0; 创建Azkaban用户,任何主机都可以访问Azkaban,密码是000000 mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY '000000'; 赋予Azkaban用户增删改查权限 mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;

5)创建Azkaban表,完成后退出MySQL

mysql> use azkaban; mysql> source /opt/module/azkaban/azkaban-db-3.84.4/create-all-sql-3.84.4.sql mysql> quit;

6)更改MySQL包大小;防止Azkaban连接MySQL阻塞

[@hadoop102 software]$ sudo vim /etc/my.cnf 在[mysqld]下面加一行max_allowed_packet=1024M [mysqld] max_allowed_packet=1024M

8)重启MySQL

[@hadoop102 software]$ sudo systemctl restart mysqld

2.1.3 配置Executor Server

Azkaban Executor Server处理工作流和作业的实际执行。

1)编辑azkaban.properties

[@hadoop102 azkaban]$ vim /opt/module/azkaban/azkaban-exec/conf/azkaban.properties #... default.timezone.id=Asia/Shanghai #... azkaban.webserver.url=http://hadoop102:8081 executor.port=12321 #... database.type=mysql mysql.port=3306 mysql.host=hadoop102 mysql.database=azkaban mysql.user=azkaban mysql.password=000000 mysql.numconnections=100 在最后添加 executor.metric.reports=true executor.metric.milisecinterval.default=60000

2)同步azkaban-exec到所有节点

[@hadoop102 azkaban]$ xsync /opt/module/azkaban/azkaban-exec

3)必须进入到/opt/module/azkaban/azkaban-exec路径,分别在三台机器上,启动executor server

[@hadoop102 azkaban-exec]$ bin/start-exec.sh [@hadoop103 azkaban-exec]$ bin/start-exec.sh [@hadoop104 azkaban-exec]$ bin/start-exec.sh

注意:如果在/opt/module/azkaban/azkaban-exec目录下出现executor.port文件,说明启动成功

4)下面激活executor,需要

[@hadoop102 azkaban-exec]$ curl -G "hadoop102:$(<./executor.port)/executor?action=activate" && echo [@hadoop103 azkaban-exec]$ curl -G "hadoop103:$(<./executor.port)/executor?action=activate" && echo [@hadoop104 azkaban-exec]$ curl -G "hadoop104:$(<./executor.port)/executor?action=activate" && echo

如果三台机器都出现如下提示,则表示激活成功

{“status”:”success”}

2.1.4 配置Web Server

Azkaban Web Server处理项目管理,身份验证,计划和执行触发。

1)编辑azkaban.properties

[@hadoop102 azkaban]$ vim /opt/module/azkaban/azkaban-web/conf/azkaban.properties 修改如下属性 ... default.timezone.id=Asia/Shanghai ... database.type=mysql mysql.port=3306 mysql.host=hadoop102 mysql.database=azkaban mysql.user=azkaban mysql.password=000000 mysql.numconnections=100 ... azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus

说明:

#StaticRemainingFlowSize:正在排队的任务数;

#CpuStatus:CPU占用情况

#MinimumFreeMemory:内存占用情况。测试环境,必须将MinimumFreeMemory删除掉,否则它会认为集群资源不够,不执行。

2)修改azkaban-users.xml文件,添加Mark用户

[@hadoop102 azkaban-web]$ vim /opt/module/azkaban/azkaban-web/conf/azkaban-users.xml <azkaban-users>   <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>   <user password="metrics" roles="metrics" username="metrics"/>   <user password="Mark" roles="metrics,admin" username="Mark"/>   <role name="admin" permissions="ADMIN"/>   <role name="metrics" permissions="METRICS"/> </azkaban-users>

3)必须进入到hadoop102的/opt/module/azkaban/azkaban-web路径,启动web server

[@hadoop102 azkaban-web]$ bin/start-web.sh

4)访问http://hadoop102:8081,并用Mark用户登陆

2.2 Work Flow案例实操

2.2.1 HelloWorld案例

1)在windows环境,新建azkaban.project文件,编辑内容如下

azkaban-flow-version: 2.0

注意:该文件作用,是采用新的Flow-API方式解析flow文件。

2)新建basic.flow文件,内容如下

nodes:   - name: jobA     type: command     config:       command: echo "Hello World"

(1)Name:job名称

(2)Type:job类型。command表示你要执行作业的方式为命令

(3)Config:job配置

3)将azkaban.project、basic.flow文件压缩到一个zip文件,文件名称必须是英文。

4)在WebServer新建项目:http://hadoop102:8081/index

Azkaban简介

5)给项目名称命名和添加项目描述

Azkaban简介

6)first.zip文件上传

 

Azkaban简介

7)选择上传的文件

 

Azkaban简介

8)执行任务流

 

Azkaban简介

 

 

 

 

 

 

Azkaban简介

Azkaban简介

 9)在日志中,查看运行结果

Azkaban简介

Azkaban简介

 

2.2.1 自动失败重试案例

需求:如果执行任务失败,需要重试3次,重试的时间间隔10000ms

具体步骤:

1)编译配置流

nodes:   - name: JobA     type: command     config:       command: sh /not_exists.sh       retries: 3       retry.backoff: 10000

参数说明:

retries:重试次数

retry.backoff:重试的时间间隔

2)将修改后的basic.flow和azkaban.project压缩成four.zip文件

3)重复2.2.1节HelloWorld后续步骤。

Azkaban简介

Azkaban简介

Azkaban简介

4)执行并观察到一次失败+三次重试

Azkaban简介

5)也可以点击上图中的Log,在任务日志中看到,总共执行了4次。

Azkaban简介

6)也可以在Flow全局配置中添加任务失败重试配置,此时重试配置会应用到所有Job。

案例如下:

config:   retries: 3   retry.backoff: 10000 nodes:   - name: JobA     type: command     config:       command: sh /not_exists.sh

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233385.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 照片怎样编辑文字_微信编辑文字显示全文

    照片怎样编辑文字_微信编辑文字显示全文Jeditable-jQuery就地编辑插件使用jeditable是一个jquery插件,它的优点是可以就地编辑,并且提交到服务器处理,是一个不可多得的就地编辑插件。(注:就地编辑,也有称即时编辑

    2022年8月1日
    3
  • Linux安装mysql5.7.26 –(傻瓜版3分钟搞定)

    Linux安装mysql5.7.26 –(傻瓜版3分钟搞定)前言在这之前的一天时间里,我全网搜mysql的各种安装方式,还有版本不同带来的问题,会发现在Mac或者在linux上安装5.7一下版本时,出现的问题会少很多,尤其是拿着dmg文件在Mac安装就是1分钟的事,但是在linux安装5.7时出现了不少的问题,出现的问题各式各样,大家安装时碰到问题了,一定要找你当前版本下的解决方式。严格按照本文步骤可以顺利安装,这也是我连续在三…

    2022年6月5日
    36
  • 信息系统建模方法_游戏设计师需要掌握什么技能

    信息系统建模方法_游戏设计师需要掌握什么技能信息系统建模方法周中元(本文转载自软件工程专家网www.21cmm.com,不代表gigix观点)   大型信息系统通常十分复杂,很难直接对它进行分析设计,人们经常借助模型来设计分析系统。模型是现实世界中的某些事物的一种抽象表示。抽象的含义是抽取事物的本质特性,忽略事物的其他次要因素。因此,模型既反映事物的原型,又不等于该原型。模型是理解、分析、开

    2022年9月23日
    2
  • FTP客户端FlashFXP激活成功教程教程[通俗易懂]

    FTP客户端FlashFXP激活成功教程教程[通俗易懂]flashfxp5.4下载地址:https://www.flashfxp.com/download激活成功教程工具下载地址:链接:https://pan.baidu.com/s/17Dq_OnH-ua9fbOuvMIdRXQ密码:laat下载之后然后正常安装就行了,安装完毕之后,先别打开软件,激活成功教程工具下载之后,包含两个文件,解压到flashfxp的安装位置根目录,如下:双击打开Fl…

    2022年7月26日
    26
  • mysql 的longtext类型对应java什么类型?

    mysql 的longtext类型对应java什么类型?在mysql的shu数据库中我们存的是小图片的base64位的编码信息。那么在java中对应什么类型呢?`cardPic`longtextCOLLATEutf8mb4_unicode_ciCOMMENT’图片正面’,`cardPic1`longtextCOLLATEutf8mb4_unicode_ciCOMMENT’图片背面’,具体代码查看:https://suxi…

    2022年5月14日
    55
  • vim怎么显示行号_vim型号

    vim怎么显示行号_vim型号1、临时使用  1、进入viorvim编辑环境下,进入命令行模式,然后输入setnumber,就可以显示行号了。如图:      2、输入setnonumber关闭行号      3、通过如上设置只能临时起作用,当你打开另外一个文件时我们的行号又没有了,所以接下来我们去永久配置一下吧。2、永久使用在/etc/vimrc(/etc/virc)文件中修改一下就ok了,在文件末尾加…

    2025年6月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号