本文所指的配置信息是指azkaban.properties
文件中的配置项
1. Azkaban Web Server 的配置
(1) 基本配置
配置 | 说明 | 默认值 |
---|---|---|
azkaban.name | 网页上显示的Azkaban实例的名称 | Local |
azkaban.label | Azkaban实例的描述信息 | My Local Azkaban |
azkaban.color | 网页的主题颜色 | #FF3601 |
azkaban.default.servlet.path | 访问WEB页面默认的根路径 | /index |
web.resource.dir | CSS和JS文件所在的位置 | web/ |
default.timezone | 时区,应该设置为Asia/Shanghai | America/Los_Angeles |
viewer.plugin.dir | 监控插件安装的路径 | plugins/viewer |
cache.directory | 缓存目录 | cache |
job.max.Xms | 每个Job初始化时分配的内存 | 1GB |
job.max.Xmx | 每个Job可以请求到的最大内存 | 2GB |
(2) Jetty 相关的配置
配置 | 说明 | 默认值 |
---|---|---|
jetty.port | jetty端口 | 8081 |
jetty.use.ssl | 是否使用SSL | false |
jetty.maxThreads | 用于发送请求的最大线程数 | 25 |
jetty.ssl.port | SSL port | 8443 |
jetty.keystore | keystore文件的位置 | |
jetty.password | jetty密码 | |
jetty.keypassword | jetty密码 | |
jetty.truststore | truststore文件的位置 | |
jetty.trustpassword | trust密码 |
(3) Project 管理相关的配置
配置 | 说明 | 默认值 |
---|---|---|
project.temp.dir | 上传调度任务时使用的临时文件夹 | temp |
project.version.retention | 清理前保留还未进行调度的项目的版本个数 | 3 |
creator.default.proxy | 自动将项目的创建者作为代理用户添加到项目中 | true |
lockdown.create.projects | 防止除具有Admin角色的人以外的任何人创建新项目 | false |
lockdown.upload.projects | 防止除管理员用户和具有上传项目权限的用户以外的任何人上传调度任务 | false |
(4) MySQL 相关配置
配置 | 说明 | 默认值 |
---|---|---|
database.type | 数据库类型,目前只支持MySQL | mysql |
mysql.port | MySQL端口号 | 3306 |
mysql.host | MySQL主机名 | localhost |
mysql.database | MySQL数据库 | |
mysql.user | MySQL用户名 | |
mysql.password | MySQL密码 | |
mysql.numconnections | Web客户端可以打开的MySQL连接的最大个数 | 100 |
(5) Multiple Executor 模式相关的配置
azkaban.use.multiple.executors
- 说明:是否开启多executor模式
- 默认值:false
azkaban.executorselector.filters
- 说明:当有多个Executor同时启动的时候,需要从中选择一个Executor去执行任务,这里设置一组过滤器的种类,不满足要求的Executor就不会被分配任务,可选的值有:StaticRemainingFlowSize、MinimumFreeMemory和CpuStatus,注意这个配置与顺序无关
- 默认值:无
azkaban.executorselector.comparator.{ComparatorName}
- 说明:当设置了Executor的过滤器类型后,还要设置过滤条件,比较器的种类有NumberOfAssignedFlowComparator、Memory、LastDispatched和CpuUsage这4种
- 举例:
(1) azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
解释:如果已经某个Executor上已经提交的任务个数大于1个,就不往该Executor上分配任务
(2) azkaban.executorselector.comparator.Memory=1
解释:如果某个Executor所在节点的可用内存不足1G,就不往该节点分配任务
(3) azkaban.executorselector.comparator.CpuUsage=1
解释:如果某个Executor所在节点的可用CPU核数不足1个,就不往该节点分配任务
(4) azkaban.executorselector.comparator.LastDispatched=1
解释:如果上一次任务就是在这个Executor上分配的,那么本次的任务就不分配给这个Executor
azkaban.queueprocessing.enabled
- 说明:是否启用队列来分配任务
- 默认值:true
azkaban.webserver.queue.size
- 说明:队列的大小
- 默认值:100000
azkaban.activeexecutor.refresh.milisecinterval
- 说明:统计可用executor个数的时间间隔(ms)
- 默认值:50000
azkaban.activeexecutor.refresh.flowinterval
- 说明:用于统计当前阻塞的任务个数的时间间隔(ms)
- 默认值:5
azkaban.executorinfo.refresh.maxThreads
- 说明:用于统计以上信息的线程个数
- 默认值:5
(6) Executor 管理相关配置
配置 | 说明 | 默认值 |
---|---|---|
execution.logs.retention.ms | 任务执行日志的保留时间(ms) | 7257600000L(12 weeks) |
(7) 通信邮件相关配置
配置 | 说明 | 默认值 |
---|---|---|
mail.sender | azkaban发送通知消息的邮箱地址 | |
mail.host | 邮箱服务器的主机名 | |
mail.user | 邮箱服务器的用户名 | |
mail.password | 邮箱服务器的密码 | |
job.failure.email | 任务执行成功发送的邮箱 | |
job.success.email | 任务执行失败发送的邮箱 |
(8) 用户管理相关配置
配置 | 说明 | 默认值 |
---|---|---|
user.manager.class | 用户管理使用的类(可自定义) | azkaban.user.XmlUserManager |
user.manager.xml.file | 配置用户信息的xml文件的路径 | conf/azkaban-users.xml |
(9) 用户 Session 相关配置
配置 | 说明 | 默认值 |
---|---|---|
session.time.to.live | 用户session超时时间(ms) | 86400000 |
max.num.sessions | 最多可以同时开启的session个数 | 10000 |
(10) HA 相关配置
配置 | 说明 | 默认值 |
---|---|---|
azkaban.webserver.external_hostname | 另一个webserver的主机名 | |
azkaban.webserver.external_ssl_port | 另一个webserver的ssl端口 | |
azkaban.webserver.external_port=8081 | 另一个webserver的端口 |
2. Azkaban Executor Server 配置
(1) 基本配置
配置 | 说明 | 默认值 |
---|---|---|
azkaban.webserver.url | web server 的URL | |
azkaban.jobtype.plugin.dir | jobtype plugin 保存路径 | plugins/jobtypes |
azkaban.project.dir | 项目保存路径 | projects |
default.timezone.id | Asia/Shanghai | America/Los_Angeles |
(2) MySQL 相关配置
配置 | 说明 | 默认值 |
---|---|---|
database.type | 数据库类型,目前只支持MySQL | mysql |
mysql.port | MySQL端口号 | 3306 |
mysql.host | MySQL主机名 | localhost |
mysql.database | MySQL数据库 | |
mysql.user | MySQL用户名 | |
mysql.password | MySQL密码 | |
mysql.numconnections | Web客户端可以打开的MySQL连接的最大个数 | 100 |
(3) Executor 相关配置
配置 | 说明 | 默认值 |
---|---|---|
executor.port | executor端口 | 12321 |
executor.maxThreads | 每个executor使用的线程数 | |
executor.flow.threads | 每个任务可以使用的线程数 | |
executor.global.propertie | Executor使用的全局配置文件的路径 | conf/global.properties |
3. 插件配置
Azkaban在安全功能上做了增强,除了可以使用Azkaban配置的用户执行任务以外,也可以使用系统用户来提交任务,这使的Azkaban充分利用了Linux系统的权限安全机制,并且使得资源的可见性提升,简化了监控资源的操作。配置过程如下:
编辑azkaban-exec-server/plugins/jobtypes/commonprivate.properties
文件:
# 设置为true,才可以使用系统用户提交任务
execute.as.user=true
# 后面的路径是你放置execute-as-user这个文件的路径
azkaban.native.lib=/path/to/execute-as-user
# 使用系统用户提交的时候,azkaban默认把它们放入azkaban组
# 所以你需要提前创建好azkaban这个组或者修改为一个已存在的组
azkaban.group.name=azkaban
execute-as-user文件的构造过程:
# (1) 在源码包中找到execute-as-user.c文件的位置
# 例如在源码包的az-exec-util/src/main/c/目录下
find . -name execute-as-user.c
# (2) 将execute-as-user.c文件移动到azkaban的安装目录下,例如:
cp ./az-exec-util/src/main/c/execute-as-user.c /opt/azkaban/
# (3) 进去azkaban安装目录,执行以下命令
cd /opt/azkaban/
gcc execute-as-user.c -o execute-as-user
sudo chown root execute-as-user
sudo chmod 6050 execute-as-user