一、Azkaban工作流程
Azkaban版本:3.84
hadoop102 | hadoop103 | hadoop104 |
---|---|---|
executor | executor | executor |
webserver |
二、配置数据库
1、登录mysql数据库
mysql -uxxx -pxxxx
2、新建数据库azkaban,切换到azkaban数据库
mysql> create database azkaban;
mysql> use azkaban;
3、建表(azkaban-db-3.84.4下的create-all-sql-3.84.4.sql)
mysql> source create-all-sql-3.84.4.sql;
三、配置Executor Server
1)编辑azkaban.properties
[kele@hadoop102 azkaban]$ vim /opt/module/azkaban/azkaban-exec/conf/azkaban.properties
修改如下属性
#修改时区
default.timezone.id=Asia/Shanghai
#设置web端地址
azkaban.webserver.url=http://hadoop102:8081
#设置端口号
executor.port=12321
#配置与数据库连接
database.type=mysql
mysql.port=3306
mysql.host=hadoop102
mysql.database=azkaban
mysql.user=root
mysql.password=*****
mysql.numconnections=100
##在最后添加,metric的设置主要和日志相关
executor.metric.reports=true
executor.metric.milisecinterval.default=60000
2)同步azkaban-exec到所有节点
[kele@hadoop102 azkaban]$ xsync /opt/module/azkaban/azkaban-exec
3)必须进入到/opt/module/azkaban/azkaban-exec路径,分别在三台机器上,
启动executor server
[kele@hadoop102 azkaban-exec]$ bin/start-exec.sh
[kele@hadoop103 azkaban-exec]$ bin/start-exec.sh
[kele@hadoop104 azkaban-exec]$ bin/start-exec.sh
或者:xcall.sh /opt/module/azkaban/azkaban-exec/bin/start-exec.sh
注意:如果在/opt/module/azkaban/azkaban-exec目录下出现executor.port文件,说明启动成功
4)下面激活executor,需要(注意:每次启动服务都需要激活)
[kele@hadoop102 azkaban-exec]$ curl -G "hadoop102:$(<./executor.port)/executor?action=activate" && echo
[kele@hadoop103 azkaban-exec]$ curl -G "hadoop103:$(<./executor.port)/executor?action=activate" && echo
[kele@hadoop104 azkaban-exec]$ curl -G "hadoop104:$(<./executor.port)/executor?action=activate" && echo
<./executor.port:类似于标准输出,将当前目录下./executor.port文件中的内容读取出来作为变量。这里默认是12321,可以直接替换成12321。
如果三台机器都出现如下提示,则表示激活成功
{"status":"success"}
四、配置Web Server
Azkaban Web Server处理项目管理,身份验证,计划和执行触发。
1)编辑azkaban.properties
[kele@hadoop102 azkaban]$ vim /opt/module/azkaban/azkaban-web/conf/azkaban.properties
修改如下属性
...
default.timezone.id=Asia/Shanghai
...
database.type=mysql
mysql.port=3306
mysql.host=hadoop102
mysql.database=azkaban
mysql.user=azkaban
mysql.password=000000
mysql.numconnections=100
...
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
说明:
#azkaban.executorselector.filters: 当有多个Executor同时启动的时候,需要从中选择一个Executor去执行任务,这里设置一组过滤器的种类,不满足要求的Executor就不会被分配任务
#StaticRemainingFlowSize:正在排队的任务数;
#CpuStatus:CPU占用情况
#MinimumFreeMemory:内存占用情况。测试环境,必须将MinimumFreeMemory删除掉,否则它会认为集群资源不够,不执行。
2)修改azkaban-users.xml文件,添加kele用户
[kele@hadoop102 azkaban-web]$ vim /opt/module/azkaban/azkaban-web/conf/azkaban-users.xml
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<!--添加kele用户,增加权限管理员,查看-->
<user password="kele" roles="metrics,admin" username="kele"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
3)必须进入到hadoop102的/opt/module/azkaban/azkaban-web路径,启动web server
[kele@hadoop102 azkaban-web]$ bin/start-web.sh
4)访问http://hadoop102:8081,并用kele用户登陆
邮件报警
在web节点上设置邮件报警
vi /opt/module/azkaban/azkaban-web/conf/azkaban.properties
#设置邮件发送服务器,需要 申请邮箱,切开通stmp服务,
mail.sender=xxxx@xxx.com
mail.host=smtp.126.com
mail.user=xxxx@xxx.com
mail.password=邮箱授权码
#设置成功、失败时给xxxx邮箱发送(测试好像没有用)
job.failure.email=xxxx@xxx.com
job.success.email=xxxx@xxx.com
在执行时在这里设置可以发送邮件
五、脚本启动
#!/bin/bash
#azkaban的一键启动脚本,只接收单个start或stop参数
if(($#!=1))
then
echo 请输入单个start或stop参数!
exit
fi
#对传入的单个参数进行校验,且执行相应的启动和停止命令
if [ $1 = start ]
then
#启动executor
xcall "cd /opt/module/azkaban/azkaban-exec ; bin/start-exec.sh "
sleep 5s
#激活executor
for i in hadoop102 hadoop103 hadoop104
do
ssh $i "curl -G '$i:12321/executor?action=activate' && echo "
done
#启动web-server
cd /opt/module/azkaban/azkaban-web
bin/start-web.sh
elif [ $1 = stop ]
then
cd /opt/module/azkaban/azkaban-web
bin/shutdown-web.sh
xcall /opt/module/azkaban/azkaban-exec/bin/shutdown-exec.sh
else
echo 请输入单个start或stop参数!
fi
xcall jps
六、使用语法
1、新建后缀是project的文件,存放azkaban的版本
azkaban-flow-version: 2.0
2、新建后缀flow文件的配置文件
例如:
nodes:
- name: mysql_to_hdfs.sh
type: command
config:
command: mysql_to_hdfs.sh second ${dt}
- name: hdfs_to_ods_db.sh
type: command
dependsOn:
- mysql_to_hdfs.sh
config:
command: hdfs_to_ods_db.sh ${dt}
3、压缩成zip的格式上传执行任务