azkaban的安装部署、使用与常见问题解决

来源:互联网 发布:863软件孵化器靠谱吗 编辑:程序博客网 时间:2024/06/05 20:35

azkaban介绍
为什么需要工作流调度系统
一个完整的数据分析系统通常都是由大量任务单元组成:
shell脚本程序,java程序,mapreduce程序、hive脚本等
各任务单元之间存在时间先后及前后依赖关系
为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
1、通过Hadoop先将原始数据同步到HDFS上;
2、借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
3、需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
4、将明细数据进行复杂的统计分析,得到结果报表信息;
5、需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

azkaban的安装部署
下载还jar包
我这里使用的是
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
azkaban-web-server-2.5.0.tar.gz
将jar包上传到linux下
创建目录azkaban
将三个半解压到azkaban目录下

[root@mini1 ~]# mkdir azkaban[root@mini1 ~]# tar -zxvf azkaban-web-server-2.5.0.tar.gz -C azkaban[root@mini1 ~]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C azkaban[root@mini1 ~]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C azkaban[root@mini1 ~]# cd azkaban/[root@mini1 azkaban]# ll总用量 12drwxr-xr-x. 2 root root 4096 1019 16:27 azkaban-2.5.0drwxr-xr-x. 7 root root 4096 1019 16:26 azkaban-executor-2.5.0drwxr-xr-x. 8 root root 4096 1019 16:26 azkaban-web-2.5.0

将azkaban-executor-2.5.0和azkaban-web-2.5.0重命名

[root@mini1 azkaban]# mv azkaban-web-2.5.0/ server[root@mini1 azkaban]# mv azkaban-executor-2.5.0/ executor[root@mini1 azkaban]# ll总用量 12drwxr-xr-x. 8 root root 4096 1019 16:26 azkaban-2.5.0drwxr-xr-x. 7 root root 4096 1019 16:26 executordrwxr-xr-x. 2 root root 4096 1019 16:27 server

在mini1上重新开启个窗口,打开mysql(如果没有安装请参考hive的安装)创建个数据库azkaban
将azkaban-2.5.0下的sql脚本 create-all-sql-2.5.0.sql 导入到mysql
create-all-sql-2.5.0.sql是一堆建表语句,如下

[root@mini1 azkaban-2.5.0]# cat create-all-sql-2.5.0.sql CREATE TABLE active_executing_flows (        exec_id INT,        host VARCHAR(255),        port INT,        update_time BIGINT,        PRIMARY KEY (exec_id));CREATE TABLE active_sla (        exec_id INT NOT NULL,        job_name VARCHAR(128) NOT NULL,        check_time BIGINT NOT NULL,        rule TINYINT NOT NULL,        enc_type TINYINT,        options LONGBLOB NOT NULL,        primary key(exec_id, job_name));...
mysql> create database azkaban;Query OK, 1 row affected (0.01 sec)mysql> use azkaban;Database changedmysql> source /root/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sqlmysql> show tables;+------------------------+| Tables_in_azkaban      |+------------------------+| active_executing_flows || active_sla             || execution_flows        || execution_jobs         || execution_logs         || project_events         || project_files          || project_flows          || project_permissions    || project_properties     || project_versions       || projects               || properties             || schedules              || triggers               |+------------------------+

创建SSL配置

[root@mini1 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA输入密钥库口令:  //123456再次输入新口令: //123456您的名字与姓氏是什么?//可以不输入直接回车  [Unknown]:  您的组织单位名称是什么?//可以不输入直接回车  [Unknown]:  您的组织名称是什么?//可以不输入直接回车  [Unknown]:  您所在的城市或区域名称是什么?//可以不输入直接回车  [Unknown]:  您所在的省/市/自治区名称是什么?//可以不输入直接回车  [Unknown]:  CN该单位的双字母国家/地区代码是什么?//可以不输入直接回车  [Unknown]:  CNCN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=CN, C=CN是否正确? [否]:  y输入 <jetty> 的密钥口令        (如果和密钥库口令相同, 按回车):  //直接回车[root@mini1 server]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp:是否覆盖"/etc/localtime"? y[root@mini1 server]# date20171019日 星期四 16:47:57 CST//需要让每台机器时间一致

完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 拷贝到 azkaban web服务器(server)根目录中.

[root@mini1 azkaban]# ll总用量 16drwxr-xr-x. 2 root root 4096 1019 16:53 azkaban-2.5.0drwxr-xr-x. 7 root root 4096 1019 16:26 executor-rw-r--r--. 1 root root 2224 1019 16:37 keystoredrwxr-xr-x. 8 root root 4096 1019 16:26 server[root@mini1 azkaban]# cp keystore server/

azkaban web服务器(server)配置
进入azkaban web服务器安装目录 conf目录,修改azkaban.properties文件

[root@mini1 azkaban]# cd server/[root@mini1 server]# ll总用量 32-rw-r--r--. 1 root root  105 422 2014 azkaban.versiondrwxr-xr-x. 2 root root 4096 422 2014 bindrwxr-xr-x. 2 root root 4096 1019 16:26 confdrwxr-xr-x. 2 root root 4096 422 2014 extlib-rw-r--r--. 1 root root 2224 1019 16:55 keystoredrwxr-xr-x. 2 root root 4096 1019 16:26 libdrwxr-xr-x. 2 root root 4096 422 2014 pluginsdrwxr-xr-x. 6 root root 4096 1019 16:26 web[root@mini1 server]# cd conf/[root@mini1 conf]# ll总用量 8-rw-r--r--. 1 root root 1022 422 2014 azkaban.properties-rw-r--r--. 1 root root  266 422 2014 azkaban-users.xml[root@mini1 conf]# vi azkaban.properties #Azkaban Personalization Settingsazkaban.name=Test                           #服务器UI名称,用于服务器上方显示的名字azkaban.label=My Local Azkaban                               #描述azkaban.color=#FF3601                                                 #UI颜色azkaban.default.servlet.path=/index                         #web.resource.dir=/root/azkaban/server/web/                                               #默认根web目录 建议最好写绝对路径,以免出现找不到文件错误default.timezone.id=Asia/Shanghai                           #默认时区,已改为亚洲/上海 默认为美国#Azkaban UserManager classuser.manager.class=azkaban.user.XmlUserManager   #用户权限管理默认类user.manager.xml.file=/root/azkaban/server/conf/azkaban-users.xml              #用户配置,具体配置参加下文#Loader for projectsexecutor.global.properties=/root/azkaban/serverconf/global.properties    # global配置文件所在位置azkaban.project.dir=projects                                                #database.type=mysql                                                              #数据库类型mysql.port=3306                                                                       #端口号mysql.host=localhost  #数据库连接IP                                                    mysql.database=azkaban  #数据库实例名                                                     mysql.user=root #数据库用户名                                                                 mysql.password=123456 #数据库密码mysql.numconnections=100   #最大连接数                                               # Velocity dev modevelocity.dev.mode=false # Jetty服务器属性.jetty.maxThreads=25 #最大线程数                                                              jetty.ssl.port=8443  #Jetty SSL端口                                                                 jetty.port=8081   #Jetty端口                                                                      jetty.keystore=/root/azkaban/server/keystore                                                        #SSL文件名jetty.password=123456 #SSL文件密码                                                            jetty.keypassword=123456  #Jetty主密码 与 keystore文件相同                                                    jetty.truststore=/root/azkaban/server/keystore                                                               #SSL文件名jetty.trustpassword=123456 # SSL文件密码                                                  # 执行服务器属性executor.port=12321                                                               #执行服务器端口# 邮件设置mail.sender=xxxxxxxx@163.com                                       #发送邮箱mail.host=smtp.163.com                                                       #发送邮箱smtp地址mail.user=xxxxxxxx                                       #发送邮件时显示的名称mail.password=                                              #邮箱密码job.failure.email=                             #任务失败时发送邮件的地址job.success.email=                          #任务成功时发送邮件的地址lockdown.create.projects=false                                           #cache.directory=cache                                                            #缓存目录

用户配置
进入azkaban web服务器(server)conf目录,修改azkaban-users.xml

[root@mini1 conf]# vi azkaban-users.xml <azkaban-users>        <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />        <user username="metrics" password="metrics" roles="metrics"/>        <user username="admin" password="admin" roles="admin,metrics" />        <role name="admin" permissions="ADMIN" />        <role name="metrics" permissions="METRICS"/></azkaban-users>

配置的只有第三行,是用来登录的用户名和密码

azkaban 执行服务器executor配置
进入执行服务器安装目录conf,修改azkaban.properties

[root@mini1 azkaban]# cd executor/[root@mini1 executor]# ll总用量 24-rw-r--r--. 1 root root  105 422 2014 azkaban.versiondrwxr-xr-x. 2 root root 4096 422 2014 bindrwxr-xr-x. 2 root root 4096 1019 16:26 confdrwxr-xr-x. 2 root root 4096 422 2014 extlibdrwxr-xr-x. 2 root root 4096 1019 16:26 libdrwxr-xr-x. 2 root root 4096 422 2014 plugins[root@mini1 executor]# cd conf[root@mini1 conf]# ll总用量 8-rw-r--r--. 1 root root  55 422 2014 azkaban.private.properties-rw-r--r--. 1 root root 469 422 2014 azkaban.properties-rw-r--r--. 1 root root   0 422 2014 global.properties[root@mini1 conf]# vi azkaban.properties #Azkabandefault.timezone.id=Asia/Shanghai# Azkaban JobTypes Pluginsazkaban.jobtype.plugin.dir=plugins/jobtypes#Loader for projectsexecutor.global.properties=executor.global.properties=/root/azkaban/executor/conf/global.propertiesazkaban.project.dir=projectsdatabase.type=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkabanmysql.user=rootmysql.password=123456mysql.numconnections=100# Azkaban Executor settingsexecutor.maxThreads=50executor.port=12321executor.flow.threads=30

到这里就配置完了
启动
进入到server的bin目录

[root@mini1 bin]# ll总用量 52-rw-r--r--. 1 root root  9348 1019 17:51 azkaban-access.log-rw-r--r--. 1 root root 18031 1019 17:51 azkaban-webserver.log-rwxr-xr-x. 1 root root   161 422 2014 azkaban-web-shutdown.sh-rwxr-xr-x. 1 root root  1277 1019 17:18 azkaban-web-start.sh-rwxr-xr-x. 1 root root   116 422 2014 schedule2trigger.sh-rwxr-xr-x. 1 root root   118 422 2014 start-web.shdrwxr-xr-x. 2 root root  4096 1019 17:48 temp[root@mini1 bin]# ./azkaban-web-start.sh ...2017/10/25 20:02:50.071 +0800 INFO [log] [Azkaban] Started SslSocketConnector@0.0.0.0:84432017/10/25 20:02:50.071 +0800 INFO [AzkabanWebServer] [Azkaban] Server running on ssl port 8443.^C[root@mini1 bin]# jps1626 ResourceManager2149 Jps1520 NameNode2125 AzkabanWebServer

进入executor的bin目录

[root@mini1 executor]# cd bin[root@mini1 bin]# ll总用量 28-rw-r--r--. 1 root root    0 1019 17:36 azkaban-access.log-rwxr-xr-x. 1 root root  305 422 2014 azkaban-executor-shutdown.sh-rwxr-xr-x. 1 root root 1347 1019 17:35 azkaban-executor-start.sh-rw-r--r--. 1 root root  600 1019 17:38 azkaban-webserver.logdrwxr-xr-x. 3 root root 4096 1019 17:50 executionsdrwxr-xr-x. 3 root root 4096 1019 17:50 projects-rwxr-xr-x. 1 root root  130 422 2014 start-exec.shdrwxr-xr-x. 2 root root 4096 1019 17:50 temp[root@mini1 bin]# ./azkaban-executor-start.sh ...2017/10/25 20:03:19.505 +0800 INFO [AzkabanExecutorServer] [Azkaban] Azkaban Executor Server started on port 123212017/10/25 20:05:19.291 +0800 INFO [FlowRunnerManager] [Azkaban] Cleaning recently finished

启动出错主要就两种,刚好都让我遇到了,反正我每次安装各种服务都能遇到错。

Invalidmaximumheapsize:-Xmx4G

这种错是设置内存太大了,修改下启动脚本azkaban-web-start.sh,azkaban-executor-start.sh,将 AZKABAN_OPTS=”-Xmx4G” 修改为 AZKABAN_OPTS=”-Xmx512M”
这时候在启动又出现各种文件不存在的异常,这是我当时配置的时候都写的相对路径而且写错了,后来改成绝对路径就行了。上面的就是正确的绝对路径。

启动后页面查看
这里写图片描述

运行一个来试试

创建一个job描述文件
内容是

#command.jobtype=command                                                    command=echo 'hello'

打成zip文件
这里写图片描述

页面登录后,创建project
这里写图片描述

zip文件上传

这里写图片描述
这里写图片描述
这里写图片描述
这里立即执行
这里写图片描述
执行成功后,可以查看详情
这里写图片描述
点击details后能看到详情
这里写图片描述

原创粉丝点击