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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LOJ10049_基金012498

    LOJ10049_基金012498LOJ10049Trie裸题(虽然我写这SB题写了快一小时)对字符串建树的同时刷答案,有两种情况:经过了一个字符串的词尾(即过了一个标记点)一直在另一个字符串里走(没有让树长出新枝)#include&lt;bits/stdc++.h&gt;#definegt()(p1==p2&amp;&amp;(p2=(p1=buf)+fread(buf,1,1000000,std…

    2022年10月1日
    0
  • navicat服务器地址和端口号怎么看_sqlserver数据库端口号怎么查

    navicat服务器地址和端口号怎么看_sqlserver数据库端口号怎么查格式:“ip,port”,如“127.0.0.1,59980”

    2022年8月30日
    2
  • 达人评测小米平板5怎么样[通俗易懂]

    达人评测小米平板5怎么样[通俗易懂]小米平板5系列将推出三款新机,均会搭载高通处理器,分别为骁龙870、骁龙860和骁龙768G,分别对应高、中、低三个档位,无论是学习还是娱乐、工作,小米平板5都能提供匹配的体验。骁龙870大家此前已经非常熟悉,目前市面上已经有多款搭载该芯片的产品亮相,而骁龙860目前还未在国内上市。据悉,骁龙860处理器是此前骁龙855Plus的增强版,采用7nm工艺打造,CPU主频为2.96GHz,为1+3+4的三丛集架构设计,超大核为Kryo485,并且在5G、内存等和方面带来了全新提升,性能更..

    2022年8月10日
    15
  • 蛋花花:互联网哪些内容你愿意付费

    蛋花花:互联网哪些内容你愿意付费

    2021年7月8日
    89
  • sqlserver2016安装步骤产品密钥_kepserver使用教程

    sqlserver2016安装步骤产品密钥_kepserver使用教程1.进入安装中心:可以参考硬件和软件要求、可以看到一些说明文档2.选择全新安装模式继续安装3.输入产品秘钥:这里使用演示秘钥进行4.在协议中,点击同意,并点击下一步按钮,继续安装5.进入全局规

    2022年8月3日
    4
  • #ZipLib可以用于闭源软件

    #ZipLib可以用于闭源软件一直对各开源协议理解得不够透彻,对#ZipLib说的这段话:[quote]helibraryisreleasedundertheGPLwiththefollowingexception:Linkingthislibrarystaticallyordynamicallywithothermodulesismakingacombin…

    2022年7月26日
    3

发表回复

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

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