Azkaban安装和使用
1.简介
Open-source Workflow Manager(开源的工作流管理器)
Azkaban is a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web user interface to maintain and track your workflows.
Azkaban是在LinkedIn上创建的批处理工作流作业调度程序,用于运行Hadoop作业。Azkaban通过作业依赖性解决订单,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。
Azkaban:Scheduler调度框架
之前我们跑mapreduce或者hive SQL时,都是在linux服务器上执行shell脚本,shell1 ==> shell2,shell1跟shell2之前有依赖关系,shell1执行完之后才能执行shell2,所以用crontab肯定有风险,我们就需要一种更加安全高效的方法来自动执行我们的job作业.
2.Azakaban安装
1.Gradle安装
gradle也是一个类似于maven的工具,Azkaban需要使用gradle来编译;gradle需要先安装jdk,就不多做赘述(我的安装博客里至少写了3次了)
gradle下载地址:http://services.gradle.org/distributions/
wget http://services.gradle.org/distributions/gradle-5.4.1-bin.zip
unzip gradle-5.4.1-bin.zip -d /opt/
cd /opt/gradle-5.4.1/
vim ~/.bash_profile
#添加gradle的环境变量
export GRADLE_HOME=/opt/gradle-5.4.1
export PATH=$GRADLE_HOME/bin:$PATH
source ~/.bash_profile
#验证是否安装成功
gradle -v
------------------------------------------------------------
Gradle 5.4.1
------------------------------------------------------------
Build time: 2019-04-26 08:14:42 UTC
Revision: 261d171646b36a6a28d5a19a69676cd098a4c19d
Kotlin: 1.3.21
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 1.8.0_181 (Oracle Corporation 25.181-b13)
OS: Linux 3.10.0-862.el7.x86_64 amd64
2.下载地址:
下载是从Github上下载编译的
Azkaban的github地址:https://github.com/azkaban/azkaban
wget https://github.com/azkaban/azkaban/archive/3.57.0.tar.gz
tar -xzvf 3.57.0.tar.gz -C /opt/
3.编译Azkaban
cd /opt/azkaban-3.57.0/
./gradlew build -x test
#编译成功结果
> Task :az-hadoop-jobtype-plugin:compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /opt/azkaban-3.57.0/az-hadoop-jobtype-plugin/src/main/java/azkaban/jobtype/HadoopSecureSparkWrapper.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
BUILD SUCCESSFUL in 2m 21s
73 actionable tasks: 73 executed
#编译成功的软件在这个位置
cd azkaban-solo-server/build/distributions/
#解压到指定目录
tar -xzvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /opt/
# ll
total 8
#启动的脚本文件
drwxr-xr-x 3 root root 67 May 14 15:03 bin
#配置文件
drwxr-xr-x 2 root root 82 May 14 15:03 conf
#依赖的jar包
drwxr-xr-x 2 root root 4096 May 14 15:03 lib
#插件目录
drwxr-xr-x 3 root root 22 May 14 15:03 plugins
drwxr-xr-x 2 root root 4096 May 14 15:03 sql
drwxr-xr-x 6 root root 73 May 14 15:03 web
3.Azkaban的使用
1.配置文件配置
配置文件都在conf目录下
azkaban.properties的修改
# Azkaban Personalization Settings
azkaban.name=BIDATA
azkaban.label=BIDATA Azkaban
azkaban-users.xml的修改
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<!--新增用户的配置-->
<user password="123456" roles="admin" username="admin"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
2.启动Azkaban
./bin/start-solo.sh
#启动之后Jps能看到服务的进程
Jps
32395 AzkabanSingleServer
#在目录下有一个local文件夹,里边有服务的log日志
cd local/
-rw-r--r-- 1 root root 13650 May 14 16:11 azkaban-webserver.log
3.WEB UI界面使用
服务的默认端口是8081,输入http://xxx.xxx.xxx.xxx:8081就能访问我们搭建的Azkaban,输入我们刚刚在user配置文件配置的用户信息就能登录使用了
3.1创建project
点击右上角的create project按钮创建
创建之后可以进行权限分配
3.2Job上传
右上角蓝色的upload按钮点击之后能上传编写的job文件,并且只支持zip压缩
3.3编写job文件
创建project文件和basic文件
project文件包含内容:
azkaban-flow-version: 2.0
basic文件包含内容:
nodes:
- name: jobA
type: command
config:
command: echo "This is an echoed text."
然后将两个文件打在同一个zip包中上传到Azkaban上
3.4运行job
上传完之后能看见我们编写的jobA
然后点击执行按钮,查看执行日志
3.5有依赖的job编写
编写basic文件,做的操作是jobB跟C依赖于A,D依赖于B跟C
nodes:
- name: jobA
type: command
config:
command: echo "This is an A text."
- name: jobB
type: command
config:
command: echo "This is an B text."
dependsOn:
- jobA
- name: jobC
type: command
config:
command: echo "This is an C text."
dependsOn:
- jobA
- name: jobD
type: command
config:
command: echo "This is an D text."
dependsOn:
- jobB
- jobC
然后同样的操作,上传并执行.
3.6使用Azkaban执行mapreduce任务
编写basic文件
nodes:
- name: mr-etl
type: command
config:
command: "su hdfs /opt/cloudera/parcels/CDH/lib/hadoop/bin/hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.13.1.jar wordcount /input/test.txt /azkaban/mr/out"
然后同样的操作,上传并执行.
Tips:在写hadoop命令跟jar目录要把目录写完整,不然有可能会执行失败.
3.7补充
定时任务的配置:
点击execute之后,可以点击左下角Schedule按钮配置定时任务
然后可以在上边菜单栏的Scheduling选项看见我们配置的定时任务,同时还能对定时任务进行邮件告警配置