阿兹卡班

工作流调度系统

大量的任务单元

Shell脚本程序、ja程序、mapreduce程序、hive脚本等。

任务单元之间存在时序和依赖关系。

为了很好地组织如此复杂的执行计划,需要一个工作流调度系统来调度执行。

一个业务系统每天产生20G原始数据,我们每天都要处理。处理步骤如下:

1)通过Hadoop (HDFS操作)将原始数据上传到HDFS;

2)使用MapReduce清理原始数据(MapReduce操作);

3)将清洗后的数据导入到hive表中(hive导入操作);

4)将hive中多个表的数据连接起来,得到Hive的详细列表(创建中间表);

5)通过对明细表的统计和分析,得到结果报告信息(hive查询操作);

适用场景

(2)任务依赖性(1)任务结果,(3)任务依赖性(2)任务结果,(4)任务依赖性(3)任务结果,(5)任务依赖性(4)任务结果。一般来说,(1)应该在(2)和(3)之前执行,(4)和(5)应该再次执行。

阿兹卡班是什么?

Azkaban是Linkedin推出的批处理工作流任务调度器,主要用于在一个工作流中按照特定的顺序运行一组任务和流程。它的配置是通过简单的键:值对建立依赖关系。

Azkaban使用作业配置文件来建立任务之间的依赖关系,并提供易于使用的web用户界面来维护和跟踪您的工作流程。

特性

1)兼容任何版本的hadoop。

2)易于使用的网络用户界面

3)上传简单的工作流程

4)便于设置任务之间的关系。

5)调度工作流

6)模块化和可插拔的插件机制

7)认证/授权(与权威合作)

8)能够终止和重启工作流。

9)关于失败和成功的电子邮件提醒

通用工作流调度系统

1)简单任务调度:由crontab直接实现;

2)复杂任务调度:开发一个调度平台或者使用现成的开源调度系统,比如ooize和azkaban。

结构

阿兹卡班Web服务器:阿兹卡班Web服务器是整个阿兹卡班工作流系统的主要管理器,负责用户登录认证、项目管理、定期工作流执行、跟踪工作流执行进度等一系列任务。

Azkabanexecutorserver:负责具体工作流的提交和执行,通过mysql数据库协调任务的执行。

关系数据库(MySQL):存储大部分执行流状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。

固定

下载地址:链接:https://pan.baidu.com/s/1QvDgNc4SP5TTX2Sodhcg提取代码:ntfh复制此内容,打开百度网盘手机App,操作更方便。

安装Azkaban

在/opt/module/下创建阿兹卡班目录

[atguigu@hadoop102模块]$ mkdir阿兹卡班

将azkaban-web-server-2.5.0.tar.gz、azkaban-executor-server-2.5.0.tar.gz和azkaban-sql-script-2.5.0.tar.gz解压到/opt/module/azkaban目录。

【阿特吉古@hadoop102软件】$ tar-zxvf azkaban-web-server-2.5.0.tar.gz-C/opt/module/阿兹卡班/【阿特吉古@hadoop102软件】$ tar-zxvf azkaban-executor-server-2.5.0.tar.gz-C/opt/module/阿兹卡班/【阿特吉古@hadoop102软件】$ tar-zxvf azkaban-sql-script-2.5.0.tar.gz-C/opt/module/阿兹卡班/

重命名解压缩的文件。

[atguigu@hadoop102阿兹卡班]$ mv阿兹卡班-we b-2.5.0/server[at guigu @ Hadoop 102阿兹卡班]$ mv阿兹卡班-执行者-2 . 5 . 0/执行者

阿兹卡班脚本导入

进入mysql,创建阿兹卡班数据库,将解压后的脚本导入阿兹卡班数据库。

[at guigu @ Hadoop 102 azkaban]$ MySQL-ur oot-p 000000 MySQL & gt;创建数据库阿兹卡班;mysql & gt用阿兹卡班;mysql & gtsource/opt/module/azkaban/azkaban-2 . 5 . 0/create-all-SQL-2 . 5 . 0 . sqla

源后跟。sql文件用于批处理中的sql语句。sql文件。

· 生成密钥对和证书

Keytool是一个ja数据证书的管理工具,它使用户能够管理自己的公钥/私钥对和相关证书。

-keystore指定密钥库的名称和位置(生成的各种信息都将存储在。密钥库文件)。

-genkey(或-genkeypair)生成一个密钥对。

-alias指定生成的密钥对的别名,如果没有别名,则默认为mykey。

-keyalg算法RSA/DSA默认为DSA。

生成密钥库的密码和相应信息的密钥库。

[at guigu @ Hadoop 102 azzkaban]$ keytool-keystore keystore-alias jetty-genkey-keyalg RSA输入keystore的密码:再次输入新密码:你的名和姓是什么?[未知]:您的组织单位名称是什么?[未知]:您的组织名称是什么?【未知】:你所在的城市或地区叫什么名字?【未知】:你所在的省/市/自治区叫什么?[未知]:这家公司的两个字母的国家/地区代码是什么?【未知】:cn =未知,ou =未知,o =未知,l =未知,ST =未知,c =未知是否正确?[否]: y输入

注意:

密钥库的密码必须至少为6个字符,可以是纯数字或字母,也可以是数字和字母的组合等。

keystore的密码应该与的密钥相同,这样容易记住。

2)将密钥库复制到azkaban web服务器的根目录。

[at guigu @ Hadoop 102 azkaban]$ mv keystore/opt/module/azkaban/server/

· 时间同步配

首先在服务器节点上配置时区。

如果时区配置文件Asia/Shanghai不在/usr/share/zoneinfo/目录中,它将由tzselect生成。

[at guigu @ Hadoop 102 azkaban]$ tz select请标识一个位置,以便可以正确设置时区规则。请选择一个大陆或海洋。1)非洲2)美洲3)南极洲4)北冰洋5)亚洲6)大西洋7)澳大利亚8)欧洲9)印度洋10)太平洋11)无-我想使用Posix TZ格式指定时区。#?5请选择一个国家。1)阿富汗18)以色列35)巴勒斯坦2)亚美尼亚19)日本36)菲律宾3)阿塞拜疆20)约旦37)卡塔尔4)巴林21)哈萨克斯坦38)俄罗斯5)孟加拉国22)朝鲜(北)39)沙特阿拉伯6)不丹23)韩国(南)40)新加坡7)文莱24)科威特41)斯里兰卡8)柬埔寨25)吉尔吉斯斯坦42)叙利亚9)中国26)老挝43)10)塞浦路斯27)黎巴嫩44)塔吉克斯坦11)东 阿联酋14)印度31)缅甸48)乌兹别克15)印度尼西亚32)尼泊尔49)越南16)伊朗33)阿曼50)也门17)伊拉克34)巴基斯坦#? 9请选择下列时区之一。1)北京时间2)新疆时间#?1以下信息已给出:中国北京时间因此TZ = & # 39;亚洲/上海& # 39;将被使用。当地时间现在是:CST 2018年10月18日星期四16:24:23。世界时现在是:UTC 2018年10月18日星期四08:24:23。以上信息可以吗?1)是2)否#?1您可以通过添加TZ = & # 39;行来使这一更改永久生效。亚洲/上海& # 39;;将tz导出到文件& # 39;。个人资料& # 39;在您的主目录中;然后注销并重新登录。这里再次显示了TZ值,这一次是在标准输出上,因此您可以在shell脚本中使用/usr/bin/tzselect命令:Asia/Shanghai

复制时区文件并覆盖系统的本地时区配置。

at guigu @ Hadoop 102 azkaban]$ CP/usr/share/zoneinfo/Asia/Shanghai/etc/local time

集群时间同步(同时发送到三个窗口)

[at guigu @ Hadoop 102 azkaban]$ sudo date-s & # 39;2018-10-18 16:39:30'

配置文件

网络服务器配置

1)进入azkaban web服务器安装目录的conf目录,打开azkaban.properties文件。

[at guigu @ Hadoop 102 conf]$ pwd/opt/module/azkaban/server/conf[at guigu @ Hadoop 102 conf]$ vim azkaban . properties

根据以下配置修改azkaban.properties文件

#阿兹卡班个性化设置#服务器UI名称,名称azkaban . name = Test # description azkaban . label =我的本地azkaban # UI color azkaban . color = # ff 3601 azkaban . Default . servlet . path =/index #默认web服务器存储web文件的目录web . resource . dir =/opt/module/azkaban/server/web/#默认时区,已改为亚洲/上海, 并且默认为American default . time zone . id = Asia/Shanghai # Azkaban User manager class User . manager . class = Azkaban . User . xmluser manager #用户权限管理默认类(绝对路径)User . manager . XML . file =/opt/module/Azkaban/Server/conf/Azkaban-users . XML #项目加载器#全局配置文件的位置(绝对路径)executor . global . Properties =/opt/module/Azkaban/executor/conf/global . Properties Azkaban . project . dir =项目#数据库类型数据库。 # Jetty服务器属性。#最大线程数Jetty . max threads = 25 # Jetty SSL port Jetty . SSL . port = 8443 # Jetty port Jetty . port = 8081 # SSL文件名(绝对路径)Jetty . keystore =/opt/module/azkaban/server/keystore # SSL文件密码Jetty . password = 000000 # Jetty的主密码与keystore文件的主密码相同。jetty.keypassword=000000#SSL文件名(绝对路径)jetty . trust store =/opt/module/Azkaban/server/keystore # SSL文件密码jetty . trust password = 000000 # Azkaban执行程序设置executor.port=12321#邮件设置mail . sender = mail . host = job . failure . email = job . success . email = lockdown . create . projects = false cache . directory = cache

Web服务器用户配置

在azkaban web服务器中安装目录conf,根据下面的配置修改azkaban-users.xml文件,添加管理员用户。

at guigu @ Hadoop 102 conf]$ vim azkaban-users . XML & lt;阿兹卡班-用户& gt& lt用户用户名= & # 34;阿兹卡班& # 34;密码= & # 34;阿兹卡班& # 34;角色= & # 34;管理& # 34;groups = & # 34阿兹卡班& # 34;/& gt;& lt用户用户名= & # 34;指标& # 34;密码= & # 34;指标& # 34;角色= & # 34;指标& # 34;/& gt;& lt用户用户名= & # 34;管理& # 34;密码= & # 34;管理& # 34;角色= & # 34;管理、指标& # 34;/& gt;& lt角色名= & # 34;管理& # 34;权限= & # 34;管理& # 34;/& gt;& lt角色名= & # 34;指标& # 34;权限= & # 34;指标& # 34;/& gt;

执行服务器配置

进入执行服务器安装目录conf,打开azkaban.properties

[at guigu @ Hadoop 102 conf]$ pwd/opt/module/azkaban/executor/conf[at guigu @ Hadoop 102 conf]$ vim azkaban . properties

根据以下配置修改azkaban.properties文件。

# azkaban # time zone default . time zone . id = Asia/Shanghai # azkaban job types plugins # job type plugins的位置azkaban . job type . plugin . dir = plugins/job types # Loader for projects executor . global . properties =/opt/module/azkaban/executor/conf/global . properties azkaban . project . dir = projects database . type = MySQL . port = 3306 MySQL . host = Hadoop 102 MySQL . database = azkaban MySQL . user = root MySQL

启动执行器服务器。

在executor服务器目录中执行启动命令。

[at guigu @ Hadoop 102 executor]$ pwd/opt/module/azkaban/executor[at guigu @ Hadoop 102 executor]$ bin/azkaban-executor-start . sh

启动web服务器

[at guigu @ Hadoop 102 server]$ pwd/opt/module/azkaban/server[at guigu @ Hadoop 102 server]$ bin/azkaban-we b-start . sh

先执行执行人,再执行web,避免因为找不到执行人而导致Web服务器启动失败。

[atguigu@hadoop102 server]$ jps

3601阿兹卡班执行服务器

5880 Jps

3661阿兹卡班网络服务器

显示