文章目录
Azkaban介绍
我们都知道,大数据的分析用了很多的任务,之前我们用crontab跑定时脚本,基于hadoop的我们用阿兹卡班。 Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,主要用于在一个工作流 内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的 key:value 对的方式,通 过配置中的 dependencies 来设置依赖关系。Azkaban 使用 job 配置文件建立任务之间的依赖 关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流
安装
下载地址
http://azkaban.github.io/downloads.html
安装过程
解压并初始化mysql
解 压 azkaban-web-server-2.5.0.tar.gz 、 azkaban-executor-server-2.5.0.tar.gz 、 azkaban-sql-script-2.5.0.tar.gz 到/opt/azkaban下面
mysql数据库新建一个azkaban数据库。
将azkaban sql表结构导入mysql
该文件位于解压目录下。(一定是带all的sql文件)
把这个导入mysql
生成key
首先给我们的两个目录换个名字
[root@bdc15aaf8607 azkaban]# mv azkaban-web-2.5.0/ server
[root@bdc15aaf8607 azkaban]# mv azkaban-executor-2.5.0/ executor
然后用安装jdk后自带的keytool生成密钥和证书
[root@bdc15aaf8607 conf]# cd /opt/azkaban/server
[root@bdc15aaf8607 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
下面的密码我全部设置为00000,具体根据自己情况。
[root@bdc15aaf8607 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]:
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]:
What is your first and last name?
[Unknown]:
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: y
Enter key password for <jetty>
(RETURN if same as keystore password):
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12".
[root@bdc15aaf8607 server]# ls
azkaban.version bin conf extlib keystore lib plugins web
配置server的azkaban.properties
vim azkaban.properties
#默认web server存放web文件的目录
web.resource.dir=/opt/azkaban/server/web/
#默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai
#用户权限管理默认类(绝对路径)
user.manager.xml.file=/opt/azkaban/server/conf/azkaban-users.xml
#Loader for projects
#global配置文件所在位置(绝对路径)
executor.global.properties=/opt/azkaban/executor/conf/global.properties
#数据库类型
database.type=mysql
#端口号
mysql.port=3306
#数据库连接IP
mysql.host=hadoop102
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=root
#数据库密码
mysql.password=000000
#SSL文件名(绝对路径)
jetty.keystore=/opt/azkaban/server/keystore
#SSL文件密码
jetty.password=000000
#Jetty主密码与keystore文件相同
jetty.keypassword=000000
#SSL文件名(绝对路径)
jetty.truststore=/opt/module/azkaban/server/keystore
#SSL文件密码
jetty.trustpassword=000000
配置server的azkaban-users.xml
加入第三个admin这一个
<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>
配置executor
[root@bdc15aaf8607 conf]# pwd
/opt/azkaban/executor/conf
[root@bdc15aaf8607 conf]# ls
azkaban.private.properties azkaban.properties global.properties
[root@bdc15aaf8607 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=/opt/azkaban/executor/conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=mysql
mysql.database=azkaban
mysql.user=root
mysql.password=apusic2019
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
启动
启动executor,再启动server
nohup /opt/azkaban/executor/bin/azkaban-executor-start.sh &
nohup /opt/azkaban/server/bin/azkaban-web-start.sh &
jps 一下
[root@25a0d772b5bc opt]# jps
128 Jps
103 AzkabanWebServer
41 AzkabanExecutorServer
然后看看能不能符问8443,https://ip:8443
重要的事情说三遍
https
https
https不然ssl证书不能用
账户密码我们刚刚添加了admin用户,登入。
案例
1.单一任务
新建文件first.job
内容
#first.job
type=command
command=echo ‘this is my first job’
然后将job文件打成zip包上传到azkaban进行调度。
2.多个任务
start.job
#start.job
type=command
command=touch /opt/module/kangkang.txt
第二个job:step1.job依赖start.job
[atguigu@hadoop102 jobs]$ vim step1.job
#step1.job
type=command
dependencies=start
command=echo “this is step1 job”
第三个job:step2.job依赖start.job
[atguigu@hadoop102 jobs]$ vim step2.job
#step2.job
type=command
dependencies=start
command=echo “this is step2 job”
第四个job:finish.job依赖step1.job和step2.job
[atguigu@hadoop102 jobs]$ vim finish.job
#finish.job
type=command
dependencies=step1,step2
command=echo “this is finish job”
借用一下简书https://www.jianshu.com/p/e13d6a11420c的图做一下和airflow的比较。
参考:www.atguigu,com