工作流调度器azkaban
https://azkaban.readthedocs.io/en/latest/getStarted.html
一、课前准备
- 安装VMware虚拟化软件
- 安装CentOS 7虚拟机3个
- 安装3节点的hadoop集群
- 安装了hive
- 安装了zookeeper集群
- 安装了hbase集群
二、课堂主题
- azkaban架构
- azkaban运行模式
- azkaban安装部署
- azkaban使用
三、课堂目标
- 理解azkanban架构
- 完成azkaban安装部署
- 学会azkaban各种使用方式
四、知识要点
1. 概述
1. 为什么需要工作流调度系统
- 一个完整的数据分析系统通常都是由大量任务单元组成:
- shell脚本程序,java程序,mapreduce程序、hive脚本等
- 各任务单元之间存在时间先后及前后依赖关系
- 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;
- 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
- 通过Hadoop先将原始数据同步到HDFS上;
- 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
- 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive宽表;
- 将明细数据进行各种统计分析,得到结果报表信息;
- 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
2. 工作流调度实现方式
-
简单的任务调度:直接使用linux的crontab来定义;
-
复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban、airflow、dophinschedule等
2. Azkaban介绍
-
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流(work flow)内以一个特定的顺序运行一组工作和流程。
-
Azkaban定义了一种KV格式文件(properties)来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
-
它有如下功能特点:
-
提供功能清晰、简单易用的web UI界面
-
方便上传工作流
-
调度工作流
-
能够杀死并重新启动工作流
-
工作流和任务的日志记录和审计
-
提供job配置文件快速建立任务和任务之间的关系
-
提供模块化的可插拔机制,原生支持command、java、hive、hadoop
-
安全性高:认证/授权(权限的工作)
-
提供分布式的多个执行服务器executor
-
提供conditional workflow工作流
-
3. azkaban的基本架构
- Azkaban由三部分构成
- 1、Azkaban Web Server
提供了Web UI,是azkaban的主要管理者,包括 project 的管理,认证,调度,对工作流执行过程的监控等。 - 2、Azkaban Executor Server
负责具体的工作流和任务的调度提交 - 3、Mysql
用于保存项目、日志或者执行计划之类的信息
- 1、Azkaban Web Server
4. Azkaban架构的三种运行模式
1. solo server mode(单机模式)
-
solo server mode是azkaban的一个独立的实例
-
易于安装:不需要安装mysql,它内置了H2数据库,作为它的底层持久化存储
-
易于开始使用:管理服务器web server和执行服务器execute server都在一个进程中运行,任务量不大项目可以采用此模式
-
包含azkaban所有的功能
-
有兴趣的同学,可以参考官网文档
2. two server mode
- web server 和 executor server运行在不同的进程
- 数据库为mysql,管理服务器和执行服务器在不同进程
- 这种模式下,管理服务器和执行服务器互不影响。
3. multiple executor mode
- web server 和 executor server运行在不同的进程,executor server有多个
- 该模式下,执行服务器和管理服务器分别部署,且执行服务器可以在不同服务器上有多个运行的实例。
5. Azkaban安装部署
1. 编译azkaban
建议:直接使用老师编译出来的安装包进行安装
所以“编译azkaban”这个步骤,可以做个了解即可,不用亲自动手编译
1、下载源码包
这里选用azkaban4.0.0这个版本的源码进行重新编译,编译完成之后得到我们需要的安装包,然后进行安装
注意:
- 使用
Gradle
编译azkaban源码 - 需要使用jdk1.8或更高的版本来进行编译
- 先获得azkaban源码
- 浏览器访问地址
https://github.com/azkaban/azkaban/releases
,
下载源码包
- 或者使用命令下载
1 2 |
cd /export/softwares/ wget https://github.com/azkaban/azkaban/archive/4.0.0.tar.gz |
2、修改build.gradle
-
将
azkaban-4.0.0.tar.gz
源码包上传到编译源码的虚拟机的/export/softwares
目录,然后解压并编译提示:最好有一个虚拟机,专门用于编译各种框架的源码
1 2 3 4 5 |
# 切换到root用户 su root cd /export/softwares/ tar -xzvf azkaban-4.0.0.tar.gz -C /export/servers/ cd /export/servers/azkaban-4.0.0/ |
使用gradle进行编译源码,此过程中
- 需要去maven的仓库中下载各种jar包等文件,为了提高下载的速度,可以配置成从国内的maven仓库下载文件
- 方法如下
1 |
vim /export/servers/azkaban-4.0.0/build.gradle |
在如下2个位置添加maven仓库url
1 2 |
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven{ url 'http://maven.oschina.net/content/groups/public/'} |
位置①
位置②
3、开始编译
1 2 3 4 5 6 7 8 9 |
cd /export/servers/azkaban-4.0.0 yum -y install git yum -y install gcc-c++ ./gradlew build installDist -x test #开始下载,控制台会打印如下类似的日志 Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip .......... |
- 编译成功
编译之后,获得安装包如下
4、azkaban-exec-server
编译完成之后得到我们需要的安装包在以下目录下即可获取得到azkaban-exec-server存放目录
1 2 |
cd /export/servers/azkaban-4.0.0/azkaban-exec-server/build/distributions/ ll |
5、azkaban-web-server
azkaban-web-server存放目录
1 2 |
cd /export/servers/azkaban-4.0.0/azkaban-web-server/build/distributions/ ll |
6、azkaban-solo-server
azkaban-solo-server存放目录
1 2 |
cd /export/servers/azkaban-4.0.0/azkaban-solo-server/build/distributions/ ll |
7、execute-as-user.c
azkaban two server模式下需要的C程序在这个路径下面
1 2 |
cd /export/servers/azkaban-4.0.0/az-exec-util/src/main/c ll |
8、数据库脚本文件
数据库脚本文件在这个路径下面
1 2 |
cd /export/servers/azkaban-4.0.0/azkaban-db/build/sql/ ll |
如果不想手动编译可以直接使用我这里编译好的文件,百度网盘链接:https://pan.baidu.com/s/14owbePcSBXBW_bwyLTVVNQ
提取码:NIIT
2. multiple executor模式安装
前提:某节点已经安装mysql,此文档以node03已经安装mysql为例
若没有特殊说明,所有操作都是使用
hadoop
普通用户操作
在node03节点操作
1. 确认所需软件:
Azkaban Web服务安装包
1 |
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz |
Azkaban执行服务安装包
1 |
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz |
编译之后的sql脚本
1 |
create-all-sql-0.1.0-SNAPSHOT.sql |
C程序文件脚本
1 |
execute-as-user.c |
将以上4个文件上传到node03的/export/softwares
目录
2. 数据库准备
进入mysql的客户端执行以下命令
1 |
[hadoop@node03 ~]$ mysql -uroot -p123456 |
mysql中执行以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- 设置密码的验证强度等级 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 /export/softwares/create-all-sql-0.1.0-SNAPSHOT.sql; exit; |
更改 MySQL 包大小;防止 Azkaban 连接 MySQL 阻塞
1 |
hadoop@node03 ~]$ sudo vim /etc/my.cnf |
在文件末尾增加如下内容;然后保存、退出
1 |
max_allowed_packet=1024M |
重启mysql服务
1 2 3 |
[hadoop@node03 sbin]$ sudo /sbin/service mysqld restart # 输出如下日志 Redirecting to /bin/systemctl restart mysqld.service |
3. 解压软件安装包
解压azkaban-web-server
1 2 3 4 5 |
[hadoop@node03 ~]$ cd [hadoop@node03 ~]$ cd /export/softwares/ [hadoop@node03 softwares]$ tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers [hadoop@node03 softwares]$ cd /export/servers [hadoop@node03 servers]$ mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web-server-4.0.0 |
解压azkaban-exec-server
1 2 3 4 |
[hadoop@node03 servers]$ cd /export/softwares/ [hadoop@node03 softwares]$ tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers [hadoop@node03 softwares]$ cd /export/servers [hadoop@node03 servers]$ mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec-server-4.0.0 |
4. 安装SSL安全认证
安装ssl安全认证,允许我们使用https的方式访问我们的azkaban的web服务;
密码一定要一个个的字母输入,或者粘贴也行
1 2 |
[hadoop@node03 servers]$ cd /export/servers/azkaban-web-server-4.0.0 [hadoop@node03 azkaban-web-server-4.0.0]$ keytool -keystore keystore -alias jetty -genkeypair -keyalg RSA |
具体输入如下:
- 密码都是azkaban
- 显示[Unknown]:直接敲回车
- 显示[no]:输入yes,回车
- jetty密码:azkaban
如果你的linux是中文环境
如果是英文环境,上图中的“是”用“yes”代替
发现目录中多出一个秘钥文件keystore
1 2 3 4 |
[hadoop@node03 azkaban-web-server-4.0.0]$ pwd /export/servers/azkaban-web-server-4.0.0 [hadoop@node03 azkaban-web-server-4.0.0]$ ls bin conf keystore lib web |
补充:keytool的用法
1 2 3 4 5 6 7 8 9 10 11 |
# keytool中有很多的cmd及option;查看keytool用法 [hadoop@node03 azkaban-web-server-4.0.0]$ man keytool # 提示:搜索关键字,如-genkeypair OPTION DEFAULTS The following examples show the defaults for various option values. -alias "mykey" -keystore <the file named .keystore in the user's home directory> -genkeypair 生成一个秘钥对(公钥、私钥) -keyalg RSA 指定使用某算法生成秘钥对 |
5. azkaban web server安装
1、修改azkaban-web-server
修改azkaban-web-server的配置文件
1 2 |
[hadoop@node03 azkaban-web-server-4.0.0]$ cd /export/servers/azkaban-web-server-4.0.0/conf [hadoop@node03 conf]$ vim azkaban.properties |
修改文件中的如下属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 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=/export/servers/azkaban-web-server-4.0.0/keystore jetty.password=azkaban jetty.keypassword=azkaban jetty.truststore=/export/servers/azkaban-web-server-4.0.0/keystore jetty.trustpassword=azkaban ... mysql.host=node03 ... azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus |
说明:
- StaticRemainingFlowSize:正在排队的任务数;
- CpuStatus: CPU 占用情况
- MinimumFreeMemory:内存占用情况。 测试环境, 必须将 MinimumFreeMemory 删除掉,否则它会认为集群资源不够,不执行。
需要修改的项目如下图
2、设置azkaban用户
文件/export/servers/azkaban-web-server-4.0.0/conf/azkaban.properties
中默认有如下属性
1 2 |
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
1 2 3 |
[hadoop@node03 conf]$ pwd /export/servers/azkaban-web-server-4.0.0/conf [hadoop@node03 conf]$ vim azkaban-users.xml |
内容如下(注意:在向内容拷贝到xml文件时,注意格式缩进)
1 2 3 4 5 6 7 8 9 10 |
<user password="kkb123" roles="myread" username="kkbread"/> <user password="kkb123" roles="mywrite" username="kkbwrite"/> <user password="kkb123" roles="admin" username="kkbadmin"/> <user password="kkb123" roles="myread, mywrite" username="kkbrwe" groups="groupx"/> <group name="groupx" roles="myexe"/> <role name="myread" permissions="READ"/> <role name="mywrite" permissions="WRITE"/> <role name="myexe" permissions="EXECUTE"/> |
此文件格式解析,可以参考官网文档
user格式
Attributes | Values | Required? |
---|---|---|
username | 登录用户名 The login username. | 必须有 |
password | 密码 The login password. | 必须有 |
roles | role角色,如果是多个角色的话,中间逗号分隔 Comma delimited list of roles that this user has. |
非必须 |
groups | 用户所属组,如果是多个组,中间逗号分隔 Comma delimited list of groups that the users belongs to. |
非必须 |
proxy | 代理 Comma delimited list of proxy users that this users can give to a project | 非必须 |
group
Attributes | Values | Required? |
---|---|---|
name | 组名 The group name | 必须有 |
roles | role角色,如果是多个角色的话,中间逗号分隔 Comma delimited list of roles that this user has. |
非必须 |
role
Attributes | Values | Required? |
---|---|---|
name | role角色名称 The role name | 必须有 |
permissions | 权限,如果是多个权限的话,中间逗号分隔 Comma delimited list global permissions for the role |
必须有 |
可选的权限有
Permissions | Values |
---|---|
ADMIN | 管理员权限,拥有azkaban中所有的权限 Grants all access to everything in Azkaban. |
READ | 对每个project有只读权限 Gives users read only access to every project and their logs |
WRITE | 允许用户上传文件、修改job的properties、删除project Allows users to upload files, change job properties or remove any project |
EXECUTE | 允许用户执行任何flow Allows users to trigger the execution of any flow |
SCHEDULE | 允许用户给任意flow添加或移除指定的调度 Users can add or remove schedules for any flows |
CREATEPROJECTS | 如果创建project功能被锁死,有此权限的用户拥有创建project的权限 Allows users to create new projects if project creation is locked down |
6. azkaban executor server 安装
第一步:修改azkaban-exex-server配置文件
修改azkaban-exec-server的配置文件
1 2 |
[hadoop@node03 ~]$ cd /export/servers/azkaban-exec-server-4.0.0/conf [hadoop@node03 conf]$ vim azkaban.properties |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# Azkaban Personalization Settings azkaban.name=Azkaban azkaban.label=My Azkaban ... default.timezone.id=Asia/Shanghai ... jetty.use.ssl=true ...... # 新增内容 添加如下5行内容 jetty.keystore=/export/servers/azkaban-web-server-4.0.0/keystore jetty.password=azkaban jetty.keypassword=azkaban jetty.truststore=/export/servers/azkaban-web-server-4.0.0/keystore jetty.trustpassword=azkaban ... # Where the Azkaban web server is located azkaban.webserver.url=https://node03:8443 ... mysql.host=node03 ... |
第二步:添加插件
将我们编译后的C文件execute-as-user.c
上传或拷贝到/export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes
1 |
[hadoop@node03 conf]$ cp /export/softwares/execute-as-user.c /export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes/ |
然后执行以下命令生成execute-as-user
1 2 3 4 5 6 7 8 |
# 在线安装gcc-c++ [hadoop@node03 conf]$ sudo yum -y install gcc-c++ [hadoop@node03 conf]$ cd /export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes [hadoop@node03 jobtypes]$ gcc execute-as-user.c -o execute-as-user # 添加root特权 [hadoop@node03 jobtypes]$ sudo chown root execute-as-user [sudo] hadoop 的密码: [hadoop@node03 jobtypes]$ sudo chmod 6050 execute-as-user |
备注:数字表示的权限为6050
,那对应的字母表示是什么呢?
- 第一数字6表示的是特殊权限6 = 4 + 2,即同时设置了SUID和SGID
- 第二个数字0表示的所有者权限为0,字母表示为—,因为没有设置x权限, 特殊权限表示为大写字母S
- 第三个数字为5 =4 + 1,设置了用户组权限为读(r)和执行(x),特殊权限表示为小写字母s
- 第四个数字为0,字母表示为—
其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是1,表示有相应的权限:|
12 11 10 9 8 7 6 5 4 3 2 1 0S G T r w x r w x r w x第11位为
SUID(Set User ID)
位,第10位为SGID(Set Group ID)
位,第9位为sticky
位,第8-0位对应于上面的三组rwx
位。-rwsr-xr-x的值为: 表示所属用户有特殊权限SUID
1 0 0 1 1 1 1 0 1 1 0 1
-rw-r-Sr–的值为: 表示所属用户组有特殊权限SGID
0 1 0 1 1 0 1 0 0 1 0 0
给文件加
SUID
和SUID
的命令如下:
chmod u+s filename
设置SUID
位
chmod u-s filename
去掉SUID
设置
chmod g+s filename
设置SGID
位
chmod g-s filename
去掉SGID
设置另外一种方法是
chmod
接4位八进制表示法。比如
chmod 6050
,6050
对应的2进制110 000 101 000
对应的是权限是 SG — rx —
就是用户组有读写权限,并且同时有用户和用户组的特殊权限
但是使用命令
ll
列出文件的权限表示是这样
--S r-s ---
这是因为其中S表示设置SUID,s表示设置SGID同时用户组有执行权限
SUID
和SGID
的作用:随意设置会威胁到系统安全因此终端上显示成红色背景,特殊权限只在执行普通文件时生效。
比如本来是只有
root
用户才能执行的命令,加了SUID
后,普通用户就可以像root
一样用这个命令,权限提升了。上面是对于文件来说的,对于目录也差不多!目录的
S
属性使得在该目录下创建的任何文件及子目录属于该目录所拥有的组,目录的T属性使得该目录的所有者及root
才能删除该目录。还有对于s
与S
,设置SUID/SGID
需要有运行权限,否则用ls -l
后就会看到S,证明你所设置的SUID/SGID
没有起作用。
第三步:修改配置文件
修改配置文件
1 2 |
[hadoop@node03 jobtypes]$ cd /export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes [hadoop@node03 jobtypes]$ vim commonprivate.properties |
增加或修改如下内容
1 2 3 4 5 |
execute.as.user=true azkaban.native.lib=/export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes azkaban.group.name=myazkaban memCheck.enabled=false azkaban.native.lib=false |
遇到报错
Missing required property “azkaban.native.lib”
的解决办法:/plugins/jobtypes
目录下修改commonprivate.properties
配置文件,内容中添加:azkaban.native.lib=false
。然后重启启动exec服务,并激活executor。
将exec拷贝到另外两个节点,并修改所属用户
1 2 3 |
[hadoop@node03 servers]$ cd /export/servers/ [hadoop@node03 servers]$ scp -r azkaban-exec-server-4.0.0/ root@node01:$PWD [hadoop@node03 servers]$ scp -r azkaban-exec-server-4.0.0/ root@node02:$PWD |
node01节点
1 2 3 4 5 6 7 8 9 |
[root@node01 ~]# su root [root@node01 servers]# cd /export/servers/ [root@node01 servers]# chown -R hadoop:hadoop azkaban-exec-server-4.0.0/ [root@node01 servers]# su hadoop [hadoop@node01 jobtypes]$ cd /export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes # 添加root特权 [hadoop@node01 jobtypes]$ sudo chown root execute-as-user [sudo] hadoop 的密码: [hadoop@node01 jobtypes]$ sudo chmod 6050 execute-as-user |
node02节点
1 2 3 4 5 6 7 8 9 10 11 |
[hadoop@node02 ~]$ su root 密码: [root@node02 servers]# cd /export/servers/ [root@node02 servers]# chown -R hadoop:hadoop azkaban-exec-server-4.0.0/ [root@node02 servers]# su hadoop [hadoop@node02 jobtypes]$ cd /export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes # 添加root特权 [hadoop@node02 jobtypes]$ sudo chown root execute-as-user [sudo] hadoop 的密码: [hadoop@node02 jobtypes]$ sudo chmod 6050 execute-as-user |
第四步:添加用户、用户组
web server
- node03节点
/export/servers/azkaban-web-server-4.0.0/conf/azkaban-users.xml
中,添加了许多用户,如kkbread
、kkbrwe
等等 - 登录web server时,就用这里指定的用户名、密码登录
exec server
/export/servers/azkaban-exec-server-4.0.0/plugins/jobtypes/commonprivate.properties
中- 属性
execute.as.user=true
表示,azkaban的登录用户,同时作为linux服务器的系统用户 - 属性
azkaban.group.name=myazkaban
表示,这些azkaban用户(linux系统用户)都属于myazkaban
用户组 - 所以需要在3个exec服务器中,创建用户
kkbrwe
、用户组myazkaban
- 并且用户
kkbrwe
属于用户组myazkaban
- 为了解决权限问题,同时讲用户
kkbrwe
添加附属组hadoop
中 - 此处以
kkbrwe
用户为例(如果使用其他用户,按照此方式创建即可)具体命令如下 - 三节点
hadoop
用户已经有sudoers权限 - 三节点 node01、node02、node03都执行如下命令
1 2 3 4 5 6 7 8 9 10 11 |
sudo groupadd myazkaban [sudo] hadoop 的密码: sudo useradd -g myazkaban kkbrwe sudo passwd kkbrwe 新的 密码:123456 重新输入新的密码: # 将kkbrwe添加附加用户组 sudo usermod -a -G hadoop kkbrwe # 查看用户kkbrwe sudo id kkbrwe uid=1001(kkbrwe) gid=1001(myazkaban) 组=1001(myazkaban),1000(hadoop) |
exec服务器在执行flow时,会在/export/servers/azkaban-exec-server-4.0.0
目录创建目录executions
,为了解决权限问题,3台节点都需要做如下操作
node01节点
1 2 3 |
[hadoop@node01 ~]$ cd /export/servers/azkaban-exec-server-4.0.0 [hadoop@node01 azkaban-exec-server-4.0.0]$ mkdir executions [hadoop@node01 azkaban-exec-server-4.0.0]$ sudo chown :myazkaban executions/ |
node02节点
1 2 3 |
[hadoop@node02 ~]$ cd /export/servers/azkaban-exec-server-4.0.0 [hadoop@node02 azkaban-exec-server-4.0.0]$ mkdir executions [hadoop@node02 azkaban-exec-server-4.0.0]$ sudo chown :myazkaban executions/ |
node03节点
1 2 3 |
[hadoop@node03 ~]$ cd /export/servers/azkaban-exec-server-4.0.0 [hadoop@node03 azkaban-exec-server-4.0.0]$ mkdir executions [hadoop@node03 azkaban-exec-server-4.0.0]$ sudo chown :myazkaban executions/ |
说明:
:myazkaban
对应exec的commonprivate.properties
的azkaban.group.name=myazkaban
属性
7. 启动服务
第一步:启动azkaban exec server
- node01节点上
1 2 3 4 5 |
[root@node01 servers]# cd /export/servers/ [root@node01 servers]# su hadoop [hadoop@node01 servers]$ cd azkaban-exec-server-4.0.0/ [hadoop@node01 azkaban-exec-server-4.0.0]$ bin/start-exec.sh [hadoop@node01 azkaban-exec-server-4.0.0]$ jps |
关闭exec server:
bin/shutdown-exec.sh
第二步:激活我们的exec-server
-
每次启动exec都需要激活
-
node01机器下执行以下命令
1 2 3 |
[hadoop@node01 azkaban-exec-server-4.0.0]$ cd /export/servers/azkaban-exec-server-4.0.0 [hadoop@node01 azkaban-exec-server-4.0.0]$ curl -G "node01:$(<./executor.port)/executor?action=activate" && echo {"status":"success"} |
在node02上启动exec server并激活(同上)
1 2 3 4 5 |
[root@node02 servers]# cd /export/servers/ [root@node02 servers]# su hadoop [hadoop@node02 servers]$ cd azkaban-exec-server-4.0.0/ [hadoop@node02 azkaban-exec-server-4.0.0]$ bin/start-exec.sh [hadoop@node02 azkaban-exec-server-4.0.0]$ jps |
1 2 3 |
[hadoop@node02 azkaban-exec-server-4.0.0]$ cd /export/servers/azkaban-exec-server-4.0.0 [hadoop@node02 azkaban-exec-server-4.0.0]$ curl -G "node02:$(<./executor.port)/executor?action=activate" && echo {"status":"success"} |
在node03上启动exec server并激活(同上)
1 2 3 4 5 6 7 8 9 |
[hadoop@node03 servers]$ cd /export/servers/ # 如果当前用户不是hadoop,则切换到hadoop;否则,可以省略此命令 [hadoop@node03 servers]$ su hadoop 密码: [hadoop@node03 servers]$ cd azkaban-exec-server-4.0.0/ [hadoop@node03 azkaban-exec-server-4.0.0]$ bin/start-exec.sh [hadoop@node03 azkaban-exec-server-4.0.0]$ jps 17203 AzkabanExecutorServer 17224 Jps |
1 2 3 |
[hadoop@node03 azkaban-exec-server-4.0.0]$ cd /export/servers/azkaban-exec-server-4.0.0 [hadoop@node03 azkaban-exec-server-4.0.0]$ curl -G "node03:$(<./executor.port)/executor?action=activate" && echo {"status":"success"} |
三个节点的exec server都启动后,可以去mysql中确认下,node03执行命令
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[hadoop@node03 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 | node01 | 39157 | 1 | | 2 | node02 | 41613 | 1 | | 3 | node03 | 34589 | 1 | +----+--------+-------+--------+ 3 rows in set (0.00 sec) |
发现,确实有3个exec server,active=1,表示已激活
也可以在MySQL中使用update语句设置active为1完成激活
第三步:启动azkaban-web-server
- node03节点
1 2 3 4 5 6 |
[hadoop@node03 azkaban-exec-server-4.0.0]$ cd /export/servers/azkaban-web-server-4.0.0/ [hadoop@node03 azkaban-web-server-4.0.0]$ bin/start-web.sh [hadoop@node03 azkaban-web-server-4.0.0]$ jps 17298 AzkabanWebServer 17203 AzkabanExecutorServer 17322 Jps |
关闭web server命令:
bin/shutdown-web.sh
注意,无论启动一定要在server根目录下使用相对命令的方式执行,如 bin/cmd,这是因为启动脚本中使用了相对路径读取权限相关的xml文件。
宿主机浏览器访问地址:https://node03:8443
前提:宿主机的hosts文件中配置了node03 ip地址与主机名node03的映射,类似
注意一定要使用https://
协议访,问若浏览器界面出现类似情况,按图操作即可
用户名和密码可以是node03的文件/export/servers/azkaban-web-server-4.0.0/conf
中指定的用户名及密码,如下
比如此处使用用户kkbrwe
,密码kkb123
登录后,进入界面
8. 修改linux的时区问题
之前在安装虚拟机时,已经设置时区为“亚洲/上海”所以不用担心时区问题,不需要修改时区
注:先配置好服务器节点上的时区
但是如果你的时区不是“亚洲/上海”,那么需要修改成此时区
确认时区;CST +0800
表示时区是东八区(“亚洲/上海”)
1 2 |
[root@localhost azkaban-master]# date +"%Z %z" CST +0800 |
- 1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可
- 2、拷贝该时区文件,覆盖系统本地时区配置
1 |
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
Views: 28