其他分享
首页 > 其他分享> > 工作流调度器-Azkaban

工作流调度器-Azkaban

作者:互联网

1.工作流调度器

1.为什么需要工作流调度系统

2. 工作流调度实现方式

2. Azkaban介绍

3. azkaban的基本架构

4. Azkaban架构的三种运行模式

1. solo server mode(单机模式)

2. two server mode

3. multiple executor mode

Multiple Executor模式安装

 

Multiple Executor模式安装

前提:某节点已经安装mysql,此文档以hadoop02已经安装mysql为例

若没有特殊说明,所有操作都是使用hadoop普通用户操作

具体用到的安装包可以在这里下载:https://pan.baidu.com/s/1SfjBBvtyOIQ3-kIKVKjRFw 提取码:dm29

1. 确认所需软件:
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
create-all-sql-0.1.0-SNAPSHOT.sql
execute-as-user.c
2. 数据库准备
[hadoop@hadoop03 ~]$ mysql -uroot -p123456
-- 设置密码的验证强度等级
set global validate_password_policy=LOW; 
set global validate_password_length=6;
-- 创建数据库azkaban,用于存储使用azkaban框架过程中产生的数据
CREATE DATABASE azkaban;
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';  
GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION;

flush privileges;
use azkaban; 
source /bigdata/soft/create-all-sql-0.1.0-SNAPSHOT.sql;
exit;

hadoop@hadoop02 ~]$ sudo vim /etc/my.cnf
max_allowed_packet=1024M

[hadoop@hadoop02 sbin]$ sudo /sbin/service mysqld restart
# 输出如下日志
Redirecting to /bin/systemctl restart mysqld.service
3. 解压软件安装包
[hadoop@hadoop03 ~]$ cd /bigdata/soft/
[hadoop@hadoop03 soft]$ tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /bigdata/install
[hadoop@hadoop03 soft]$ cd /bigdata/install
[hadoop@hadoop03 install]$ mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web-server-4.0.0
[hadoop@hadoop03 install]$ cd /bigdata/soft/
[hadoop@hadoop03 soft]$ tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /bigdata/install/
[hadoop@hadoop03 soft]$ cd /bigdata/install/
[hadoop@hadoop03 install]$ mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec-server-4.0.0
4. 安装SSL安全认证
[hadoop@hadoop03 install]$ cd /bigdata/install/azkaban-web-server-4.0.0
[hadoop@hadoop03 azkaban-web-server-4.0.0]$ keytool -keystore keystore -alias jetty -genkeypair -keyalg RSA
[hadoop@hadoop03 azkaban-web-server-4.0.0]$ pwd
/bigdata/install/azkaban-web-server-4.0.0
[hadoop@hadoop03 azkaban-web-server-4.0.0]$ ls
bin  conf  keystore  lib  web
5. azkaban web server安装
1、修改azkaban-web-server
[hadoop@hadoop03 azkaban-web-server-4.0.0]$ cd /bigdata/install/azkaban-web-server-4.0.0/conf
[hadoop@hadoop03 conf]$ vim azkaban.properties
# Azkaban Personalization Settings
azkaban.name=Azkaban
azkaban.label=My Azkaban
...

default.timezone.id=Asia/Shanghai
...

# Azkaban Jetty server properties.
jetty.use.ssl=true
...

# 新增内容
jetty.ssl.port=8443
jetty.keystore=/bigdata/install/azkaban-web-server-4.0.0/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=/bigdata/install/azkaban-web-server-4.0.0/keystore
jetty.trustpassword=azkaban
...


mysql.host=hadoop02
...

azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus

2、设置azkaban用户
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
[hadoop@hadoop03 conf]$ pwd
/bigdata/install/azkaban-web-server-4.0.0/conf
[hadoop@hadoop03 conf]$ vim azkaban-users.xml
  <user password="123456" roles="myread" username="tenicread"/>
  <user password="123456" roles="mywrite" username="tenicwrite"/>
  <user password="123456" roles="admin" username="tenicadmin"/>
  <user password="123456" roles="myread, mywrite" username="tenicrwe" groups="groupx"/>
  
  <group name="groupx" roles="myexe"/>
  
  <role name="myread" permissions="READ"/>
  <role name="mywrite" permissions="WRITE"/>
  <role name="myexe" permissions="EXECUTE"/>  

6. azkaban executor server 安装
第一步:修改azkaban-exex-server配置文件
[hadoop@hadoop03 ~]$ cd /bigdata/install/azkaban-exec-server-4.0.0/conf
[hadoop@hadoop03 conf]$ vim azkaban.properties
# Azkaban Personalization Settings
azkaban.name=Azkaban
azkaban.label=My Azkaban
...

default.timezone.id=Asia/Shanghai
...

jetty.use.ssl=true
......

# 新增内容 添加如下5行内容
jetty.keystore=/bigdata/install/azkaban-web-server-4.0.0/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=/bigdata/install/azkaban-web-server-4.0.0/keystore
jetty.trustpassword=azkaban
...



# Where the Azkaban web server is located
azkaban.webserver.url=https://hadoop03:8443
...

mysql.host=hadoop02
...
第二步:添加插件
[hadoop@hadoop03 conf]$ cp /bigdata/install/execute-as-user.c /bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes/
# 在线安装gcc-c++
[hadoop@hadoop03 conf]$ sudo yum -y install gcc-c++
[hadoop@hadoop03 conf]$ cd /bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes
[hadoop@hadoop03 jobtypes]$ gcc execute-as-user.c -o execute-as-user
# 添加root特权
[hadoop@hadoop03 jobtypes]$ sudo chown root execute-as-user
[sudo] hadoop 的密码:
[hadoop@hadoop03 jobtypes]$ sudo chmod 6050 execute-as-user

第三步:修改配置文件
[hadoop@hadoop03 jobtypes]$ cd /bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes
[hadoop@hadoop03 jobtypes]$ vim commonprivate.properties
execute.as.user=true
azkaban.native.lib=/bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes
azkaban.group.name=myazkaban
memCheck.enabled=false
[hadoop@hadoop03 servers]$ cd /bigdata/install
[hadoop@hadoop03 servers]$ scp -r azkaban-exec-server-4.0.0/ hadoop@hadoop01:$PWD
[hadoop@hadoop03 servers]$ scp -r azkaban-exec-server-4.0.0/ hadoop@hadoop02:$PWD
[hadoop@hadoop01 ~]# cd /bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes
# 添加root特权
[hadoop@hadoop01 jobtypes]$ sudo chown root execute-as-user
[sudo] hadoop 的密码:
[hadoop@hadoop01 jobtypes]$ sudo chmod 6050 execute-as-user
[hadoop@hadoop02 ~]$ cd /bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes
# 添加root特权
[hadoop@hadoop02 jobtypes]$ sudo chown root execute-as-user
[sudo] hadoop 的密码:
[hadoop@hadoop02 jobtypes]$ sudo chmod 6050 execute-as-user
第四步:添加用户、用户组
sudo groupadd myazkaban
[sudo] hadoop 的密码:
sudo useradd -g myazkaban tenicrwe
sudo passwd tenicrwe
新的 密码:123456
重新输入新的密码:
# 将tenicrwe添加附加用户组
sudo usermod -a -G hadoop tenicrwe
# 查看用户tenicrwe
sudo id tenicrwe
uid=1001(tenicrwe) gid=1001(myazkaban) 组=1001(myazkaban),1000(hadoop)
7. 启动服务
第一步:启动azkaban exec server
[hadoop@hadoop01 ~]# cd /bigdata/install/azkaban-exec-server-4.0.0/ 
[hadoop@hadoop01 azkaban-exec-server-4.0.0]$ bin/start-exec.sh

关闭exec server: bin/shutdown-exec.sh

第二步:激活我们的exec-server
[hadoop@hadoop01 ~]$ cd /export/servers/azkaban-exec-server-4.0.0
[hadoop@hadoop01 azkaban-exec-server-4.0.0]$ curl -G "hadoop01:$(<./executor.port)/executor?action=activate" && echo {"status":"success"}

其他2个节点也同样操作,就可以启动并激活hadoop02、hadoop03的服务了。

[hadoop@hadoop02 azkaban-web-server-4.0.0]$ mysql -uroot -p
Enter password:
mysql> use azkaban;
mysql> show tables;
mysql> select * from executors;
+----+---------+-------+--------+
| id | host    | port  | active |
+----+---------+-------+--------+
|  1 | hadoop01| 39157 |      1 |
|  2 | hadoop02| 41613 |      1 |
|  3 | hadoop03| 34589 |      1 |
+----+---------+-------+--------+
3 rows in set (0.00 sec)
第三步:启动azkaban-web-server
[hadoop@hadoop03 ~]$ cd /export/servers/azkaban-web-server-4.0.0/
[hadoop@hadoop03 azkaban-web-server-4.0.0]$ bin/start-web.sh
[hadoop@hadoop03 azkaban-web-server-4.0.0]$ jps
17298 AzkabanWebServer
17203 AzkabanExecutorServer
17322 Jps

关闭web server命令:bin/shutdown-web.sh

Azkaban启动停止脚本

 

我们在上一篇文章中已经安装部署了Azkaban,但是启动的时候要去每个机器上执行一下命令。来回切换机器太麻烦,今天我们输出一个脚本,搞定自动启动停止。

1 登录到hadoop01上,在~/bin 目录下创建一个azkaban.sh脚本

[hadoop@hadoop01 ~] cd bin
[hadoop@hadoop01 ~] vi azkaban.sh

2 编写脚本文件,保持退出

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

if ((pcount==1)); then
echo no second param;
exit;
fi

#2 获取启动类型 exec 还是 web
p1=$1
p2=$2

if [[ $p1 == "exec" ]]; then
       if [[ $p2 == "start" ]]; then
               for (( i = 1; i <= 3; i++ )); do
               echo ====================hadoop$i azkaban exec $p2 ==============================
               ssh hadoop$i "source /etc/profile;cd /bigdata/install/azkaban-exec-server-4.0.0; bin/start-exec.sh"
               done
       elif [[ $p2 == "active" ]]; then
               for (( i =1; i <= 3; i++ )); do
               echo ====================hadoop$i azkaban exec $p2 ===============================
               ssh hadoop$i 'source /etc/profile;curl http://hadoop'${i}':$('cat /bigdata/install/azkaban-exec-server-4.0.0/executor.port')/executor?action=activate'
               done
       elif [[ $p2 == "stop" ]]; then
               for (( i = 1; i <= 3; i++ )); do
               echo ====================hadoop$i azkaban exec $p2 ==============================
               ssh hadoop$i "cd /bigdata/install/azkaban-exec-server-4.0.0/;bin/shutdown-exec.sh"
           done
       fi
elif [[ $p1 == "web" ]]; then
       if [[ $p2 == "start" ]]; then
               echo ====================azkaban web $p2 ==============================
               ssh hadoop3 "source /etc/profile;cd /bigdata/install/azkaban-web-server-4.0.0/; bin/start-web.sh"
       elif [[ $p2 == "stop" ]]; then
               echo ====================azkaban web $p2 ==============================
               ssh hadoop3 "source /etc/profile;cd /bigdata/install/azkaban-web-server-4.0.0/; bin/shutdown-web.sh"
       fi
fi

3 修改脚本权限

[hadoop@hadoop01 bin] sudo chmod 777 azkaban.sh

4 启动/停止脚本

[hadoop@hadoop01 bin] azkaban.sh exec start
[hadoop@hadoop01 bin] azkaban.sh exec active
[hadoop@hadoop01 bin] azkaban.sh web start
[hadoop@hadoop01 bin] xcall jps

[hadoop@hadoop01 bin] azkaban.sh exec stop
[hadoop@hadoop01 bin] azkaban.sh web stop
[hadoop@hadoop01 bin] xcall jps

   

 

标签:调度,4.0,exec,hadoop03,hadoop,azkaban,工作,server,Azkaban
来源: https://www.cnblogs.com/hanease/p/16218286.html