azkaban安装配置
一:前提条件:
-
安装MySQL
-
安装Git
yum install git
二:azkaban安装
azkaban-3.70.0.tar.gz安装N次失败,果断换了低版本azkaban-3.42.0.tar.gz
(1). 官网下载azkaban-3.42.0.tar.gz,rz上传至服务器/home/hadoop/apps,解压
tar -zxvf azkaban-3.42.0.tar.gz
下载gradle-4.1-all.zip拷贝到azkaban-3.42.0/gradle/wrapper
(2). 在azkaban-3.42.0下编译
./gradlew distTar
会生成以下这5个.tar.gz分别在以下5个文件夹azkaban-*/build/distributions/下
azkaban-db-0.1.0-SNAPSHOT.tar.gz
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT.tar.gz
azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
(3)./home/hadoop/apps下新建文件夹azkaban,并拷贝以上5个.tar.gz,然后解压
mkdir azkaban
cp /home/hadoop/azkaban-3.70.0/azkaban-/build/distributions/.tar.gz /home/hadoop/apps/azkaban
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
分别重命名为azkaban-db,azkaban-exec-server,azkaban-hadoop,azkaban-solo-server,azkaban-web-server
(4). MySQL配置
Azkaban的元数据是交给Mysql进行管理的,我们需要在Mysql中建立专用的数据库用来保存Azkaban产生的元数据。
#创建azkaban数据库及用户
mysql –uroot –proot #rooot用户登录
create database azkaban; #创建azkaban数据库
create user ‘azkaban’@’%’ identified by ‘azkaban’; #创建azkaban用户
grant all privileges on azkaban.* to ‘azkaban’@’%’ identified by ‘azkaban’; #赋权
flush privileges; #刷新
mysql -uazkaban -pazkaban # azkaban用户登录
source /home/hadoop/apps/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql #导入建表sql
(5).在azkaban-web-server和azkaban-exec-server下的创建extlib文件夹,将mysql-connector 导到该目录下
mkdir extlib
cp mysql-connector-java-5.1.45-bin.jar ./extlib/
(6). 修改配置文件
将azkaban-solo-server下的conf,plugins分别拷贝到azkaban-exec-server,azkaban-web-server目录下
配置azkaban-web-server,在azkaban-web-server/conf/路径下
1).编辑azkaban.properties
vi azkaban-web-server/conf/azkaban.properties
#Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai – 修改时区为Asia/Shanghai
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#配置MySQL数据库
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#Velocity dev mode
velocity.dev.mode=false
#Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
#Azkaban Executor settings
executor.port=12321
#mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
#JMX stats
jetty.connector.stats=true
executor.connector.stats=true
#Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
2).创建log4j.properties,并添加如下
touch log4j.properties
log4j.rootLogger=DEBUG,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%-5p %c{1}:%L - %m%n
3).编辑azkaban-user.xml
vi azkaban-web-server/conf/azkaban-user.xml
添加如下:
#访问web端的用户及密码
配置azkaban-exec-serve,在azkaban-exec-serve/conf/路径下
1).编辑azkaban.properties
vi azkaban-exec-server/conf/azkaban.properties
#Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai --修改时区
#Azkaban UserManager class
#user.manager.class=azkaban.user.XmlUserManager
#user.manager.xml.file=conf/azkaban-users.xml
#Loader for projects
–修改为绝对路径
executor.global.properties=/home/hadoop/apps/azkaban/azkaban-exec-server/conf/global.properties
azkaban.project.dir=projects
–配置MySQL
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#Velocity dev mode
velocity.dev.mode=false
#Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
#Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
2).将azkaban-web-server/conf/下的azkaban-user.xml,log4j.properties拷贝到azkaban-exec-server/conf/目录下
(7). jetty配置(在azkaban-web-server/目录下执行即可,否则启动时会提示找不见keystore文件,我没有配置jetty)
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
注:密码就输入配置文件的密码:123456 。回答里面任意两个及最后一个问题即可
keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12
(8). 启动web-server和exec-server
进入azkaban-exec-server目录,执行bin/start-exec.sh
进入azkaban-web-server目录,执行bin/start-web.sh
通过http://localhost:8081可访问到web-ui,用户密码为azkaban-user.xml配置的那个
三:azkaban使用
projects:最重要的部分,创建一个工程,所有flows将在工程中运行。
scheduling:显示定时任务
executing:显示当前运行的任务
history:显示历史运行任务
(1).创建工程
(2).上传job
创建以.job结尾的文件,
#.job文件内容(以Python为例)
type=command
command=python3 test.py
打包成.zip格式,然后上传
四:常见错误(在安装3.7版本遇见的问题)
-
ERROR [PluginCheckerAndActionsLoader] [Azkaban] plugin path plugins/triggers doesn’t exist!
忽略即可 -
ERROR [StdOutErrRedirect] [Azkaban] azkaban.executor.ExecutorManagerException: No active executors found
修改MySQL.azkaban.executors表,
update azkaban.executors set active=1; -
ERROR [StdOutErrRedirect] [Azkaban] /home/hadoop/apps/azkaban/azkaban-web-server/keystore (No such file or directory)
在azkaban-web-server/目录下执行jetty配置
五:azkaban介绍
azkaban是由Linkedin开源的一个轻量级调度器,支持调度mr,python,java,shell,hsql工作流任务
Azkaban使用Properties文件定义工作流
Azkaban的定时执行任务是基于时间的
Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Azkaban有两种运行模式:solo server mode(executor server和web server部署在同一台节点),multi server mode(executor server和web server可以部署在不同节点)