Multiple Executor模式安装

Multiple Executor模式安装

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

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

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

  • 在hadoop03节点操作
1. 确认所需软件:
  • Azkaban Web服务安装包
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
  • Azkaban执行服务安装包
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
  • 编译之后的sql脚本
create-all-sql-0.1.0-SNAPSHOT.sql
  • C程序文件脚本
execute-as-user.c
  • 将以上4个文件上传到hadoop03的/bigdata/soft目录
2. 数据库准备
  • 进入mysql的客户端执行以下命令
[hadoop@hadoop03 ~]$ mysql -uroot -p123456
  • mysql中执行以下命令:
-- 设置密码的验证强度等级
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;

  • 更改 MySQL 包大小;防止 Azkaban 连接 MySQL 阻塞
hadoop@hadoop02 ~]$ sudo vim /etc/my.cnf
  • 在文件末尾增加如下内容;然后保存、退出
max_allowed_packet=1024M

  • 重启mysql服务
[hadoop@hadoop02 sbin]$ sudo /sbin/service mysqld restart
# 输出如下日志
Redirecting to /bin/systemctl restart mysqld.service
3. 解压软件安装包
  • 解压azkaban-web-server
[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
  • 解压azkaban-exec-server
[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安全认证
  • 安装ssl安全认证,允许我们使用https的方式访问我们的azkaban的web服务;
  • 密码一定要一个个的字母输入,或者粘贴也行
[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
  • 具体输入如下:

    • 密码都是azkaban
    • 显示[Unknown]:直接敲回车
    • 显示[no]:输入yes,回车
    • jetty密码:azkaban
  • 如果你的linux是中文环境

  • 如果是英文环境,上图中的“是”用“yes”代替

  • 发现目录中多出一个秘钥文件keystore

[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
  • 修改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

  • 说明:
    • StaticRemainingFlowSize:正在排队的任务数;
    • CpuStatus: CPU 占用情况
    • MinimumFreeMemory:内存占用情况。 测试环境, 必须将 MinimumFreeMemory 删除掉,否则它会认为集群资源不够,不执行。
  • 需要修改的项目如下图
2、设置azkaban用户
  • 文件/bigdata/install/azkaban-web-server-4.0.0/conf/azkaban.properties中默认有如下属性
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
  • 上边的XmlUserManager是azkaban内置的UserManager用户管理器
  • 当启动web server时,XmlUserManager读取上边配置文件azkaban.properties,然后解析azkaban-users.xml
  • 此xml文件中用来配置azkaban的用户、组、角色
  • 接下来编辑此xml文件,用来配置azkaban用户
  • 添加用户hadoop
[hadoop@hadoop03 conf]$ pwd
/bigdata/install/azkaban-web-server-4.0.0/conf
[hadoop@hadoop03 conf]$ vim azkaban-users.xml
  • 内容如下(注意:在向内容拷贝到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配置文件
  • 修改azkaban-exec-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
...
第二步:添加插件
  • 将我们编译后的C文件execute-as-user.c上传或拷贝到/bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes
[hadoop@hadoop03 conf]$ cp /bigdata/install/execute-as-user.c /bigdata/install/azkaban-exec-server-4.0.0/plugins/jobtypes/
  • 然后执行以下命令生成execute-as-user
# 在线安装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
  • 将exec拷贝到另外两个节点,并修改所属用户
[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
  • hadoop01节点
[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
  • hadoop02节点
[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
第四步:添加用户、用户组
  • 三节点hadoop用户已经有sudoers权限
  • 三节点hadoop01、hadoop02、hadoop03都执行如下命令
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)
  • exec服务器在执行flow时,会在/bigdata/install/azkaban-exec-server-4.0.0目录创建目录executions,为了解决权限问题,3台节点都需要做如下操作
    • hadoop01节点
    [hadoop@hadoop01 ~]$ cd /bigdata/install/azkaban-exec-server-4.0.0
    [hadoop@hadoop01 azkaban-exec-server-4.0.0]$ mkdir executions
    [hadoop@hadoop01 azkaban-exec-server-4.0.0]$ sudo chown :myazkaban executions/
    
    • hadoop02节点
    [hadoop@hadoop02 ~]$ cd /bigdata/install/azkaban-exec-server-4.0.0
    [hadoop@hadoop02 azkaban-exec-server-4.0.0]$ mkdir executions
    [hadoop@hadoop02 azkaban-exec-server-4.0.0]$ sudo chown :myazkaban executions/
    
    • hadoop03节点
    [hadoop@hadoop03 ~]$ cd /bigdata/install/azkaban-exec-server-4.0.0
    [hadoop@hadoop03 azkaban-exec-server-4.0.0]$ mkdir executions
    [hadoop@hadoop03 azkaban-exec-server-4.0.0]$ sudo chown :myazkaban executions/
    

    说明::myazkaban对应exec的commonprivate.propertiesazkaban.group.name=myazkaban属性

7. 启动服务
第一步:启动azkaban exec server
  • hadoop01节点上
[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
  • 每次启动exec都需要激活
  • hadoop01机器下执行以下命令
[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的服务了。

  • 三个节点的exec server都启动后,可以去mysql中确认下,hadoop02执行命令
[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)
  • 发现,确实有3个exec server,active=1,表示已激活
第三步:启动azkaban-web-server
  • hadoop03节点
[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

  • 宿主机浏览器访问地址:https://hadoop03:8443

    前提:宿主机的hosts文件中配置了hadoop03 ip地址与主机名hadoop03的映射

    • 若浏览器界面出现类似情况,按图操作即可

  • 用户名和密码可以是hadoop03的文件/bigdata/install/azkaban-web-server-4.0.0/conf中指定的用户名及密码,如下
    比如此处使用用户tenicrwe,密码123456

  • 登录后,进入界面

posted @ 2021-06-16 22:59  Tenic  阅读(56)  评论(0编辑  收藏  举报