00-前言
初步撰写了azkaban Multi Executor Server 模式的部署说明,只是在单一节点上同时部署了web以及excutor。多excutor的情况可能会稍有不一样,待完善
01-环境介绍
1.基础环境介绍
CentOS7
azkaban 3.81.0
jdk 8
注意:需要提前在集群所有节点配置好NTP服务
可以单独创建一个linux用户azkaban专门用来安装azkaban
2.安装模式
Multi Executor Server
02-配置元数据库
1.在MySQL中创建数据库
1 mysql> CREATE DATABASE azkaban;
2.创建azkaban用户并赋权
1 # Example database creation command. The user name doesn't need to be 'azkaban' 2 mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 3 # give the user INSERT, SELECT, UPDATE, DELETE permission on all tables in the Azkaban db. 4 mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to '<username>'@'%' WITH GRANT OPTION;
3.执行建表语句
注意:脚本在azkaban-db-0.1.0-SNAPSHOT.tar.gz 中
1 mysql > source create-all-sql-0.1.0-SNAPSHOT.sql
4.修改MySQL配置
1 [mysqld] 2 ... 3 max_allowed_packet=1024M
03-安装并配置Azkaban Web Server
1.解压tar包
2.配置SSL【如果需要限定使用HTTPS访问,则配置】
azkaban web可以使用HTTPS,也可以使用HTTP的方式访问
1)说明
Keytool是java数据证书的管理工具,使用户能够管理自己的公/私钥对以及相关证书。系统一般自带,没有使用yum通过系统光盘安装即可
-keystore 指定密钥库的名称以及位置(产生的各类信息将存在keystore文件中)
-genkey(或者genkeypair) 生成密钥对
-alias 为生成的密钥指定别名,如果没有默认是mykey
-keyalg 指定密钥算法 RSA/DSA 默认是DSA
2)生成密钥对和证书
在web server所在的节点执行如下命令,生成密钥对和证书
1 keytool -genkey -keystore /opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/keystore -alias jetty -keyalg RSA
设置密码,以及输入一些没什么用的公司名称等信息
会在指定的目录下生成keystore
可以通过如下命令查看keystore中的信息
1 keytool -list -keystore /opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/keystore
3.修改配置文件
1)配置azkaban.properties
1 # Azkaban Personalization Settings 2 azkaban.name=Test 3 azkaban.label=My Local Azkaban 4 azkaban.color=#FF3601 5 azkaban.default.servlet.path=/index 6 #需要修改为绝对路径,该目录是存储web的所有内容 7 #这里最好是配置系统环境变量,然后使用环境变量来配置相关路径 8 #web.resource.dir=web/ 9 web.resource.dir=/home/azkaban/opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/web 10 #需要修改时区,默认是美国,需要改成亚洲/上海 11 #default.timezone.id=America/Los_Angeles 12 default.timezone.id=Asia/Shanghai 13 14 # Azkaban UserManager class 15 #这个是不安全的用户管理类,生产环境需要使用其他第三方的用户管理类 16 user.manager.class=azkaban.user.XmlUserManager 17 #改为绝对路径 18 user.manager.xml.file=/home/azkaban/opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/conf/azkaban-users.xml 19 20 # Loader for projects 21 #改为绝对路径 22 executor.global.properties=/home/azkaban/opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/conf/global.properties 23 azkaban.project.dir=projects 24 25 # Velocity dev mode 26 velocity.dev.mode=false 27 28 # Azkaban Jetty server properties. 29 #我这里即配置了HTTP连接的以及HTTPS连接的参数,通过jetty.use.ssl设置是否使用HTTPS访问当时。可以不启用。 30 jetty.use.ssl=false 31 jetty.maxThreads=25 32 jetty.port=8081 33 jetty.keystore=/home/azkaban/opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/keystore 34 #keystore库的密码 35 jetty.password=azkaban 36 #密钥对的密码 37 jetty.keypassword=azkaban 38 #这个是用来服务器判断客户端是否可以被信任 39 #暂时配置成服务器的keystore也可以 40 jetty.truststore=/home/azkaban/opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/keystore 41 jetty.trustpassword=azkaban 42 jetty.ssl.port=8443 43 44 # Azkaban Executor settings 45 # mail settings 46 #关于邮件提醒的一些配置 47 mail.sender= 48 mail.host= 49 # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users. 50 # enduser -> myazkabanhost:443 -> proxy -> localhost:8081 51 # when this parameters set then these parameters are used to generate email links. 52 # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used. 53 # azkaban.webserver.external_hostname=myazkabanhost.com 54 # azkaban.webserver.external_ssl_port=443 55 # azkaban.webserver.external_port=8081 56 #关于邮件提醒的一些配置 57 job.failure.email= 58 job.success.email= 59 lockdown.create.projects=false 60 cache.directory=cache 61 # JMX stats 62 jetty.connector.stats=true 63 executor.connector.stats=true 64 # Azkaban mysql settings by default. Users should configure their own username and password. 65 66 #修改数据库信息 67 database.type=mysql 68 mysql.port=3306 69 mysql.host=132.35.231.131 70 mysql.database=azkaban 71 mysql.user=azkaban 72 mysql.password=azkaban 73 mysql.numconnections=100 74 75 #Multiple Executor 76 azkaban.use.multiple.executors=true 77 azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus 78 azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1 79 azkaban.executorselector.comparator.Memory=1 80 azkaban.executorselector.comparator.LastDispatched=1 81 azkaban.executorselector.comparator.CpuUsage=1
2)配置azkaban-users.xml
配置用户及权限
1 <azkaban-users> 2 <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/> 3 <user password="metrics" roles="metrics" username="metrics"/> 4 5 <role name="admin" permissions="ADMIN"/> 6 <role name="metrics" permissions="METRICS"/> 7 </azkaban-users>View Code
这里提供了一个默认的用户azkaban
04-安装并配置Azkaban Executor Server
1.解压tar包
2.修改配置文件
1)修改azkaban.properties
1 # Azkaban Personalization Settings 2 #azkaban.name=Test 3 #azkaban.label=My Local Azkaban 4 #azkaban.color=#FF3601 5 #azkaban.default.servlet.path=/index 6 #web.resource.dir=web/ 7 #**************修改时区****************** 8 default.timezone.id=Asia/Shanghai 9 # Azkaban UserManager class 10 #user.manager.class=azkaban.user.XmlUserManager 11 #user.manager.xml.file=conf/azkaban-users.xml 12 13 # Loader for projects 14 #**************修改为绝对路径************** 15 executor.global.properties=/home/azkaban/opt/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/conf/global.properties 16 azkaban.project.dir=projects 17 18 # Velocity dev mode 19 #velocity.dev.mode=false 20 # Azkaban Jetty server properties. 21 #jetty.use.ssl=false 22 #jetty.maxThreads=25 23 #jetty.port=8081 24 25 # Where the Azkaban web server is located 26 #azkaban.webserver.url=http://localhost:8081 27 # mail settings 28 #mail.sender= 29 #mail.host= 30 # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users. 31 # enduser -> myazkabanhost:443 -> proxy -> localhost:8081 32 # when this parameters set then these parameters are used to generate email links. 33 # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used. 34 # azkaban.webserver.external_hostname=myazkabanhost.com 35 # azkaban.webserver.external_ssl_port=443 36 # azkaban.webserver.external_port=8081 37 #job.failure.email= 38 #job.success.email= 39 #lockdown.create.projects=false 40 #cache.directory=cache 41 # JMX stats 42 #jetty.connector.stats=true 43 #executor.connector.stats=true 44 # Azkaban plugin settings 45 #**************建议也修改为绝对路径************** 46 azkaban.jobtype.plugin.dir=plugins/jobtypes 47 # Azkaban mysql settings by default. Users should configure their own username and password. 48 #**************配置数据库连接************** 49 database.type=mysql 50 mysql.port=3306 51 mysql.host=132.35.231.131 52 mysql.database=azkaban 53 mysql.user=azkaban 54 mysql.password=azkaban 55 mysql.numconnections=100 56 # Azkaban Executor settings 57 #**************配置excutor的一些参数************** 58 executor.maxThreads=50 59 executor.flow.threads=30 60 executor.port=12321
05-启动web以及excutor
1.注意
1)web与excutor是通过元数据库里存储的信息来相互识别的,不需要在配置文件里配置对应的IP
2)需要先启动excutor并且在元数据库中,将excutor状态设置为活动
2.启动excutor
1)一定要在/home/azkaban/opt/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT目录下执行 ./bin/start-exec.sh
会在当前目录生成启动日志
2)一定要在/home/azkaban/opt/azkaban/azkaban-web-server-0.1.0-SNAPSHOT 目录下执行 ./bin/start-web.sh
会在当前目录生成启动日志
06-可能遇到的问题
1.启动excutor或者web,启动日志中提示 can' t start up : not enough memory
原因:主机环境中Java版本过低
解决方案:将当前用户的Java替换为1.8或者以上的版本即可
2.启动web时提示没有活动的executor
azkaban.executor.ExecutorManagerException: No active executors found
原因:元数据库中,没有active =1 的executor记录
解决方案:手动在元数据库中修改executor状态