azkaban的安装部署

azkaban介绍

为什么需要工作流调度系统
一个完整的数据分析系统通常都是由大量任务单元组成:
shell脚本程序,java程序,mapreduce程序、hive脚本等
各任务单元之间存在时间先后及前后依赖关系
为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
1、通过Hadoop先将原始数据同步到HDFS上;
2、借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
3、需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
4、将明细数据进行复杂的统计分析,得到结果报表信息;
5、需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

azkaban的安装部署

下载还jar包
我这里使用的是

azkaban-executor-server-2.5.0.tar.gz 
azkaban-sql-script-2.5.0.tar.gz 
azkaban-web-server-2.5.0.tar.gz 

1.将jar包上传到linux下
2.创建目录azkaban
3.将三个半解压到azkaban目录下

[root@mini1 ~]# mkdir azkaban
[root@mini1 ~]# tar -zxvf azkaban-web-server-2.5.0.tar.gz -C usr/local/azkaban
[root@mini1 ~]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C usr/local/azkaban
[root@mini1 ~]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C usr/local/azkaban
[root@mini1 ~]# cd usr/local/azkaban/
[root@mini1 azkaban]# ll
总用量 12
drwxr-xr-x. 2 root root 4096 10月 19 16:27 azkaban-2.5.0
drwxr-xr-x. 7 root root 4096 10月 19 16:26 azkaban-executor-2.5.0
drwxr-xr-x. 8 root root 4096 10月 19 16:26 azkaban-web-2.5.0
将azkaban-executor-2.5.0和azkaban-web-2.5.0重命名
[root@mini1 azkaban]# mv azkaban-web-2.5.0/ server
[root@mini1 azkaban]# mv azkaban-executor-2.5.0/ executor
[root@mini1 azkaban]# ll
总用量 12
drwxr-xr-x. 8 root root 4096 10月 19 16:26 azkaban-2.5.0
drwxr-xr-x. 7 root root 4096 10月 19 16:26 executor
drwxr-xr-x. 2 root root 4096 10月 19 16:27 server
建个数据库azkaban

将azkaban-2.5.0下的sql脚本 create-all-sql-2.5.0.sql 导入到mysql
create-all-sql-2.5.0.sql是一堆建表语句,如下
mysql -u root -p
mysql> create database azkaban;
Query OK, 1 row affected (0.01 sec)

mysql> use azkaban;
Database changed
mysql> source /usr/local/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
mysql> show tables;
±-----------------------+
| Tables_in_azkaban |
±-----------------------+
| active_executing_flows |
| active_sla |
| execution_flows |
| execution_jobs |
| execution_logs |
| project_events |
| project_files |
| project_flows |
| project_permissions |
| project_properties |
| project_versions |
| projects |
| properties |
| schedules |
| triggers |
±-----------------------+

创建SSL配置
[root@mini1 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入密钥库口令:  //123456
再次输入新口令: //123456
您的名字与姓氏是什么?//可以不输入直接回车
  [Unknown]:  
您的组织单位名称是什么?//可以不输入直接回车
  [Unknown]:  
您的组织名称是什么?//可以不输入直接回车
  [Unknown]:  
您所在的城市或区域名称是什么?//可以不输入直接回车
  [Unknown]:  
您所在的省/市/自治区名称是什么?//可以不输入直接回车
  [Unknown]:  CN
该单位的双字母国家/地区代码是什么?//可以不输入直接回车
  [Unknown]:  CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=CN, C=CN是否正确?
 [否]:  y

输入 <jetty> 的密钥口令
        (如果和密钥库口令相同, 按回车):  //直接回车
[root@mini1 server]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
cp:是否覆盖"/etc/localtime"? y
[root@mini1 server]# date
2017年 10月 19日 星期四 16:47:57 CST
//需要让每台机器时间一致

完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 拷贝到 azkaban web服务器(server)根目录中.

[root@mini1 azkaban]# ll
总用量 16
drwxr-xr-x. 2 root root 4096 10月 19 16:53 azkaban-2.5.0
drwxr-xr-x. 7 root root 4096 10月 19 16:26 executor
-rw-r--r--. 1 root root 2224 10月 19 16:37 keystore
drwxr-xr-x. 8 root root 4096 10月 19 16:26 server
拷贝SSL证书
[root@mini1 azkaban]# cp keystore server/

azkaban web服务器(server)配置 
进入azkaban web服务器安装目录 conf目录,修改azkaban.properties文件

[root@mini1 azkaban]# cd server/
[root@mini1 server]# ll
总用量 32
-rw-r--r--. 1 root root  105 4月  22 2014 azkaban.version
drwxr-xr-x. 2 root root 4096 4月  22 2014 bin
drwxr-xr-x. 2 root root 4096 10月 19 16:26 conf
drwxr-xr-x. 2 root root 4096 4月  22 2014 extlib
-rw-r--r--. 1 root root 2224 10月 19 16:55 keystore
drwxr-xr-x. 2 root root 4096 10月 19 16:26 lib
drwxr-xr-x. 2 root root 4096 4月  22 2014 plugins
drwxr-xr-x. 6 root root 4096 10月 19 16:26 web
配置azkaban.properties
-rw-r--r--. 1 root root 1022 4月  22 2014 azkaban.properties
-rw-r--r--. 1 root root  266 4月  22 2014 azkaban-users.xml
[root@mini1 conf]# vi azkaban.properties 
#Azkaban Personalization Settings
azkaban.name=Test                           #服务器UI名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban                               #描述
azkaban.color=#FF3601                                                 #UI颜色
azkaban.default.servlet.path=/index                         #
web.resource.dir=/root/azkaban/server/web/
                                               #默认根web目录 建议最好写绝对路径,以免出现找不到文件错误
default.timezone.id=Asia/Shanghai                           #默认时区,已改为亚洲/上海 默认为美国

#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager   #用户权限管理默认类
user.manager.xml.file=/root/azkaban/server/conf/azkaban-users.xml
              #用户配置,具体配置参加下文

#Loader for projects
executor.global.properties=/root/azkaban/serverconf/global.properties    # global配置文件所在位置
azkaban.project.dir=projects                                                #

database.type=mysql                                                              #数据库类型
mysql.port=3306                                                                       #端口号
mysql.host=localhost  #数据库连接IP                                                    
mysql.database=azkaban  #数据库实例名                                                     
mysql.user=root #数据库用户名                                                                 
mysql.password=123456 #数据库密码
mysql.numconnections=100   #最大连接数                                               
# Velocity dev mode
velocity.dev.mode=false # Jetty服务器属性.
jetty.maxThreads=25 #最大线程数                                                              
jetty.ssl.port=8443  #Jetty SSL端口                                                                 
jetty.port=8081   #Jetty端口                                                                      
jetty.keystore=/root/azkaban/server/keystore
                                                        #SSL文件名
jetty.password=123456 #SSL文件密码                                                            
jetty.keypassword=123456  #Jetty主密码 与 keystore文件相同                                                    
jetty.truststore=/root/azkaban/server/keystore
                                                               #SSL文件名
jetty.trustpassword=123456 # SSL文件密码                                                  
# 执行服务器属性
executor.port=12321                                                               #执行服务器端口

# 邮件设置
[email protected]                                       #发送邮箱
mail.host=smtp.163.com                                                       #发送邮箱smtp地址
mail.user=xxxxxxxx                                       #发送邮件时显示的名称
mail.password=                                              #邮箱密码
job.failure.email=                             #任务失败时发送邮件的地址
job.success.email=                          #任务成功时发送邮件的地址
lockdown.create.projects=false                                           #
cache.directory=cache                                                            #缓存目录
用户配置
  • 进入azkaban web服务器(server)conf目录,修改azkaban-users.xml
[root@mini1 conf]# vi azkaban-users.xml 
<azkaban-users>
        <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
        <user username="metrics" password="metrics" roles="metrics"/>
        <user username="admin" password="admin" roles="admin,metrics" />
        <role name="admin" permissions="ADMIN" />
        <role name="metrics" permissions="METRICS"/>
</azkaban-users>
配置的只有第三行,是用来登录的用户名和密码
azkaban 执行服务器executor配置

进入执行服务器安装目录conf,修改azkaban.properties

[root@mini1 azkaban]# cd executor/
[root@mini1 executor]# ll
总用量 24
-rw-r--r--. 1 root root  105 4月  22 2014 azkaban.version
drwxr-xr-x. 2 root root 4096 4月  22 2014 bin
drwxr-xr-x. 2 root root 4096 10月 19 16:26 conf
drwxr-xr-x. 2 root root 4096 4月  22 2014 extlib
drwxr-xr-x. 2 root root 4096 10月 19 16:26 lib
drwxr-xr-x. 2 root root 4096 4月  22 2014 plugins
[root@mini1 executor]# cd conf
[root@mini1 conf]# ll
总用量 8
-rw-r--r--. 1 root root  55 4月  22 2014 azkaban.private.properties
-rw-r--r--. 1 root root 469 4月  22 2014 azkaban.properties
-rw-r--r--. 1 root root   0 4月  22 2014 global.properties
[root@mini1 conf]# vi azkaban.properties 
#Azkaban
default.timezone.id=Asia/Shanghai

# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes

#Loader for projects
executor.global.properties=executor.global.properties=/root/azkaban/executor/conf/global.properties

azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100

# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30

到这里就配置完了 进入到server的bin目录

[root@mini1 bin]# ll
总用量 52
-rw-r--r--. 1 root root  9348 10月 19 17:51 azkaban-access.log
-rw-r--r--. 1 root root 18031 10月 19 17:51 azkaban-webserver.log
-rwxr-xr-x. 1 root root   161 4月  22 2014 azkaban-web-shutdown.sh
-rwxr-xr-x. 1 root root  1277 10月 19 17:18 azkaban-web-start.sh
-rwxr-xr-x. 1 root root   116 4月  22 2014 schedule2trigger.sh
-rwxr-xr-x. 1 root root   118 4月  22 2014 start-web.sh
drwxr-xr-x. 2 root root  4096 10月 19 17:48 temp
[root@mini1 bin]# ./azkaban-web-start.sh 
...
2017/10/25 20:02:50.071 +0800 INFO [log] [Azkaban] Started [email protected]:8443
2017/10/25 20:02:50.071 +0800 INFO [AzkabanWebServer] [Azkaban] Server running on ssl port 8443.
 [root@mini1 bin]# jps
1626 ResourceManager
2149 Jps
1520 NameNode
2125 AzkabanWebServer

进入executor的bin目录

[root@mini1 executor]# cd bin
[root@mini1 bin]# ll
总用量 28
-rw-r--r--. 1 root root    0 10月 19 17:36 azkaban-access.log
-rwxr-xr-x. 1 root root  305 4月  22 2014 azkaban-executor-shutdown.sh
-rwxr-xr-x. 1 root root 1347 10月 19 17:35 azkaban-executor-start.sh
-rw-r--r--. 1 root root  600 10月 19 17:38 azkaban-webserver.log
drwxr-xr-x. 3 root root 4096 10月 19 17:50 executions
drwxr-xr-x. 3 root root 4096 10月 19 17:50 projects
-rwxr-xr-x. 1 root root  130 4月  22 2014 start-exec.sh
drwxr-xr-x. 2 root root 4096 10月 19 17:50 temp
[root@mini1 bin]# ./azkaban-executor-start.sh 
...
2017/10/25 20:03:19.505 +0800 INFO [AzkabanExecutorServer] [Azkaban] Azkaban Executor Server started on port 12321
2017/10/25 20:05:19.291 +0800 INFO [FlowRunnerManager] [Azkaban] Cleaning recently finished

启动出错主要就两种,刚好都让我遇到了,反正我每次安装各种服务都能遇到错。

Invalidmaximumheapsize:-Xmx4G
1
这种错是设置内存太大了,修改下启动脚本azkaban-web-start.shazkaban-executor-start.sh,将 AZKABAN_OPTS=”-Xmx4G” 修改为 AZKABAN_OPTS=”-Xmx512M”
这时候在启动又出现各种文件不存在的异常,这是我当时配置的时候都写的相对路径而且写错了,后来改成绝对路径就行了。上面的就是正确的绝对路径。

发布了48 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36168479/article/details/86580480