大数据学习29:Azkaban3.x的简单理解 和 单机安装

来源:互联网 发布:淘宝商城手机专卖店 编辑:程序博客网 时间:2024/06/09 13:49
Azkaban 是一个任务调度框架
简单易用易维护,存在任务间依赖关系处理的框架
可以记录用户操作,做审计


1、特性:
Compatible with any version of Hadoop
Easy to use web UI
Simple web and http workflow uploads  // key-value
Project workspaces
Scheduling of workflows
Modular and pluginable
Authentication and Authorization
Tracking of user actions
Email alerts on failure and successes
SLA alerting and auto killing
Retrying of failed jobs


2、Azkaban 架构:
Azkaban Web Server // UI界面server 配置和查看
Azkaban Executor Server  // 执行server
Relational Database (MySQL)  // 元数据存储


Azkaban HA:
主要考虑解决 Mysql 和 Executor 的 HA 
在 3.0 中,已经解决了 Executor 的HA,自己配一个mysql的主从即可


3、Azkaban 的运行模式
1) the stand alone "solo-server" mode 
In solo server mode, the DB is embedded H2 and both web server and executor server run in the same process. 
如果是学习和测试,采用单机即可,包含了所有功能


2) the heavier weight two server mode 
Its DB should be backed by MySQL instances with master-slave set up. The web server and executor server should run in different processes so 


that upgrading and maintenance shouldn't affect users.
如果生产,最起码采用


3) distributed multiple-executor mode
The multiple executor mode is for most serious production environment


4、Azkaban stand alone "solo-server" mode 部署


1)下载Azkaban源码
a)git clone https://github.com/azkaban/azkaban.git  还是用这个好,用下面的好像会报错
或者
b)在release里面下载
c)解压:
tar -zxvf azkaban-3.32.1.tar.gz
azkaban-common // 工具类
azkaban-db //db
azkaban-exec-server
azkaban-hadoop-security-plugin
azkaban-solo-server
azkaban-spi
azkaban-web-server
build.gradle
gradle
gradle.properties
gradlew
gradlew.bat
intellij-java-google-style.xml
LICENSE
NOTICE
README.md
settings.gradle
test

2) 编译: 3.x 是需要编译的,官方没有提供直接安装包
a) cd /opt/software/azkaban/azkaban
./gradlew build installDist  // 类似于maven的一个工具
#会提示Downloading https://services.gradle.org/distributions/gradle-3.5-all.zip 
手动下载这个文件
gradle-3.5-all.zip
#把包拷贝到 目录中
/opt/software/azkaban/azkaban-3.32.1/gradle/wrapper
#修改配置文件
distributionUrl=gradle-3.5-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
开始编译,可以跳过测试,外加参数
./gradlew build
# Build without running tests
./gradlew build -x test
#如果编译报错可尝试下面的
./gradlew build installDist -x tests
#清理构建
./gradlew clean
#注意:需要添加hosts
##azkaban
151.101.24.209  repo1.maven.org
104.16.174.166  plugins.gradle.org
104.16.172.166  plugins-artifacts.gradle.org
104.20.22.46  nodejs.org
#下载的包会放在
/${user}/.gradle/caches
#编译过程中会遇到很多坑,比如 npm ,下载包失败等情况,重试或者重装npm 可以解决大部分问题。

3) 安装包目录:
#在这几个目录下,有 *.tar.gz(zip)
/opt/software/azkaban/azkaban/azkaban-solo-server/build/distributions
/opt/software/azkaban/azkaban/azkaban-web-server/build/distributions
/opt/software/azkaban/azkaban/azkaban-exec-server/build/distributions

4)  部署环境
a)解压
cd /opt/software/azkaban/azkaban/azkaban-solo-server/build/distributions
tar -xzvf azkaban-solo-server-3.39.0-7-g05c39f7.tar.gz -C /opt/software/azkaban/
b)启动
#注意,如果在bin里面执行,start 会报错,提示找不到db
#需要在根目录下执行
[root@hadoop002 azkaban-solo-server-3.39.0-7-g05c39f7]# bin/azkaban-solo-start.sh 
c)检查
http://192.168.137.12:8081
[root@hadoop002 caches]# jps 
#多一个
48612 AzkabanSingleServer
d)UI 分析
网页上的 Test、label、color 这几个在 azkaban.properties  中可以定义
/opt/software/azkaban/azkaban-solo-server-3.39.0-7-g05c39f7/conf
#定义了一些特性
[root@hadoop002 conf]# cat azkaban.properties //修改 
azkaban.name=Testwxk
azkaban.label=Wxk Local Azkaban
default.timezone.id=Asia/Shanghai
jetty.port=8088 

#定义了用户和权限
[root@hadoop002 conf]# cat azkaban-users.xml 
#添加一条
<user password="000000" roles="metrics" username="wxk"/>

#全局的一些变量,默认空 
[root@hadoop002 conf]# cat  global.properties

#登陆:用谷歌浏览器,360可能登陆不进去
wxk 000000

5) 运行一个demo
a) 在文件夹创建一个文本文件 foo.job 
  文件中写入
#foo.job
type=command
command=echo "Hello World"
b)  将文件压缩,压缩后缀为 zip
c)  在网页上create project 
MyFirstAzkabanDemo
d)  upload 文件
e)  execute Flow  
执行 
f)  在 history 里面能看到结果
history -> joblist -> Details 


至此,一个简单的Azkaban 单机部署完成,可以用来替代crontab,方便定时任务管理。
Azkaban job有很多特性,比如重试,脚本和任务分开管理等。
重点是 可视化功能,减少了很多运维成本。
原创粉丝点击