azkaban的三种安装部署方式
一、solo server mode
该模式中webserver和executorsrever运行在同一进程中,进程名是AzkabanSingleServer,使用自带的H2数据库,这种模式包含Azkaban的所有特性,但一般用来学习和测试
1.1节点规划
HOST | 角色 |
hadoop01 | Web Server和Executor Server统一进程 |
1.2解压配置(建议把azkaban安装在和hive同一台机子上)
-- 下载azkaban压缩包
https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz
在进行官方下载azkaban时, 由于官方并没有提供其已经编译好的安装包, 故需要我们自己进行编译,并且在编译时候, 需要提前安装好maven, Ant , Node 等软件,
-- 上传到相对应的位置 建议放在和hive一样的地方 然后解压到对应的位置
mkdir /export/servers/azkaban
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz –C /export/servers/azkaban/
-- 修改时区
vim conf/azkaban.properties
default.timezone.id=Asia/Shanghai
-- azkaban默认需要3G的内存,剩余内存不足则会报异常 如果内存大于3G 不修改也可以
vim plugins/jobtypes/commonprivate.properties
添加:memCheck.enabled=false
1.3 启动验证
注:启动/关闭必须进到azkaban-solo-server-0.1.0-SNAPSHOT/目录下 qita目录下不识别
cd azkaban-solo-server-0.1.0-SNAPSHOT/
bin/start-solo.sh
1.4 登录页面
访问Web Server=><http://hadoop01:8081/> 默认用户名密码**azkaban**
1.5 初体验测试
1)如何创建调度任务
i、在window上创建job文件(文件的个数和任务的步骤有关系)
ii、文件内容
type=command #command命令
dependencies=某个文件的名称 #如果是第一个则不用写,当前的这个任务依赖的那个job
command= echo “xxxxxxxxxx” #所执行的命令
iii、将所有的job打包成一个Zip的压缩文件 注意:只能是zip,否则azkaban识别不了
2)想要执行一个任务
I、创建一个任务的项目(一个工作流任务就是一个azkaban的项目)
II、上传工作流的任务的压缩包
III、检查, 工作流调度步骤图是否和预期的一致
IV、可以选择立即执行, 或者定时执行
二、two-server
该模式使用MySQL数据库, Web Server和Executor Server运行在不同的进程中
2.1 节点规划
HOST | juese |
Hadoop01 | MySql |
Hadoop01 | web‐server和exec‐server不同进程 不同的服务器也可以 按自己的来 |
2.2 mysql配置初始化
-- 查看自己的数据库可不可以连接上去
--可以在外面直接创建数据库 把需要的表导进去 或者是在linux上面执行 一下的代码是在linux上面执行的
-- 建立文件夹
mkdir /export/servers/azkaban
-- 将压缩包解压到对应的文件夹
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz –C /export/servers/azkaban/
-- Mysql上创建对应的库、增加权限、创建表
mysql> CREATE DATABASE azkaban_two_server; #创建数据库
mysql> use azkaban_two_server;
mysql> source /export/servers/azkaban/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql; #加载初始化sql创建表
2.3 web-server服务器配置(配置细心细心在细心)
-- 这些编译好的包在我的资源上面有
mkdir /export/servers/azkaban
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz –C /export/servers/azkaban/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz –C /export/servers/azkaban/
生成ssl证书:可以不设置, 主要是为了后面使用https方式访问, 提高安全性
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
运行此命令后,会提示输入当前生成keystore的密码及相应信息,输入的密码请记住(所有密码统一以123456输入)。
完成上述工作后,将在当前目录生成keystore证书文件,将keystore拷贝到 azkaban web服务器根目录中。 如: cp keystore azkaban-web-server-0.1.0-SNAPSHOT/
配置: conf/azkaban.properties
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai # 时区注意后面不要有空格 -
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Azkaban Jetty server properties. 开启使用ssl 并且知道端口 -
jetty.use.ssl=true
jetty.ssl.port=8443
jetty.maxThreads=25
# Azkaban Executor settings 指定本机Executor的运行端口 -
executor.host=localhost
executor.port=12321
# KeyStore for SSL ssl相关配置 注意密码和证书路径 -
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456
# Azkaban mysql settings by default. Users should configure their own username and password. -
database.type=mysql
mysql.port=3306
mysql.host=node-1
mysql.database=azkaban_two_server
mysql.user=root
mysql.password=hadoop
mysql.numconnections=100
#Multiple Executor 设置为false -
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
配置 commonprivate.properties : 此文件不存在需要手动创建在${azkaban-home}/plugins/jobtypes
mkdir -p plugins/jobtypes
vim commonprivate.properties
内容如下:
azkaban.native.lib=false
execute.as.user=false
memCheck.enabled=false
2.4 exec-server服务器配置
先将exec-server的压缩包, 进行解压操作, 在exec-server的跟目录下, 执行下面的配置:
配置conf/azkaban.properties:
# Azkaban Personalization Settings -
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Where the Azkaban web server is located -
azkaban.webserver.url=https://node-2:8443
# Azkaban mysql settings by default. Users should configure their own username and password. -
database.type=mysql
mysql.port=3306
mysql.host=node-1
mysql.database=azkaban_two_server
mysql.user=root
mysql.password=hadoop
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
-- 同样的配置限制内存的条件 内存很大的可以忽略
2.5 集群启动
在对应的跟目录下启动服务
先启动exec-server
再启动web-server
启动webServer之后进程失败消失,可通过安装包根目录下对应启动日志进行排查。
如果看到上述错误, 需要手动激活executor
cd /export/servers/azkaban/execserver
curl -G "node03:$(<./executor.port)/executor?action=activate" && echo
然后重新启动webserver
2.6 注意事项
注意1: 配置文件在修改的时候, 一定要格外的注意, 不要修改错了, 尤其的空格的问题
注意2: 在启动exec-server后, 默认情况只是将其启动了, 并没有对其进行激活, 需要进行手动的激活处理
curl -G "node03:$(<./executor.port)/executor?action=activate" && echo
也可以通过修改executors表中 状态 为 1即可 (暴力修改)
注意3: 每一次启动web-server 都会检查一遍是否有激活的executors,只会检查一次
注意4: 每一次启动execserver, 都需要进行重新的激活
三、multiple-executor mode
该模式使用MySQL数据库, Web Server和Executor Server运行在不同的机器中。且有多个Executor Server。该模式适用于大规模应用。
3.1 节点规划
HOST | 角色 |
---|---|
hadoop01 | mysql |
hadoop02 | web-server、exec-server |
hadoop03 | exec-server |
3.2发送executor server到另外一台服务器
发送后直接启动,之后,需要手动激活executor
cd /export/servers/azkaban/execserver
curl -G "node-3:$(<./executor.port)/executor?action=activate" && echo
3.3激活
激活后, 需要将web server重启, 让其重新检测有那个executor, 否则依然无法使用