Azkaban入门篇
来源:互联网 发布:国外免费网络视频聊天 编辑:程序博客网 时间:2024/06/06 03:22
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
在介绍Azkaban之前,我们先来看一下现有的两个工作流任务调度系统。知名度比较高的应该是Apache Oozie,但是其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发。另外一个应用也比较广泛的调度系统是Airflow,但是其开发语言是Python。由于我们团队内部使用Java作为主流开发语言,所以选型的时候就被淘汰掉了。我们选择Azkaban的原因基于以下几点:
- 提供功能清晰,简单易用的Web UI界面
- 提供job配置文件快速建立任务和任务之间的依赖关系
- 提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
- 基于Java开发,代码结构清晰,易于二次开发
1、Azkaban的安装
Azkaban有两种部署方式:solo server mode 和 cluster server mode。
- solo server mode(单机模式):该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。
- cluster server mode(集群模式):该模式使用MySQL数据库,webServer和executorServer运行在不同进程中,该模式适用于大规模应用。
Azkaban的组成如下:
其实在单机模式中,AzkabanSingleServer进程只是把AzkabanWebServer和AzkabanExecutorServer合到一起启动而已。
下面介绍单机版的安装过程。
(1)下载Azkaban
下载地址:http://azkaban.github.io/downloads.html
官网提供的压缩包是Azkaban2.5版本的,但是最新的版本是3.0。如果需要使用3.0版本,只需要到github上下载源码后编译即可。github地址是:GitHub - azkaban/azkaban: Azkaban workflow manager.
(2)解压安装包
下载后的安装包是:azkaban-solo-server-x.x.x.tar.gz,解压后的主要目录如下所示:
bin:包含启动和停止的脚本conf:配置文件目录data:默认自带数据库H2的数据目录executions:每个执行的工作流都会生成一个对应的文件夹,放在该目录下extlib:第三方扩展包lib:依赖的jar包logs:执行日志plugins:可拔插的插件包projects:用户上传的压缩包所在目录sql:运行所需要的mysql表的建表语句web:前端展示界面对应的HTML/CSS/JS文件
(3)数据库安装配置
MySQL安装过程(略)
进入MySQL命令行后,创建数据库:
- CREATE DATABASE azkaban;
创建用户名和密码:
- CREATE USER 'username'@'%' IDENTIFIED BY 'password';
给用户授权:
- GRANT SELECT,INSERT,UPDATE,DELETE ON <database>.* to '<username>'@'%' WITH GRANT OPTION;
导入下载包azkaban-sql-script-x.x.x.tar.gz中脚本“create.all.sql”
- SOURCE create.all.sql;
检查下载包web和executor的lib文件下是否有mysql驱动,若不存在,则拷贝一个。
(4)修改配置文件conf/azkaban.properties(以下为可修改部分,其他默认即可)
#设置项目主标题azkaban.name=Local#设置项目副标题azkaban.label=My Local Azkaban#设置为上海时间(东八区),否则会按美国时间执行default.timezone.id=Asia/Shanghai#注释掉默认的H2数据库配置后,配置MySQL数据库database.check.version=falsedatabase.type=mysqlmysql.port=3306mysql.host=192.168.0.1mysql.database=azkabanmysql.user=usernamemysql.password=passwordmysql.numconnections=100#配置禁用Jetty服务器jetty.use.ssl=falsejetty.ssl.port=8043jetty.maxThreads=25jetty.port=8081#配置告警邮件mail.sender=xxx@163.commail.host=smtp.163.commail.user=mailUsernamemail.password=mailPassword#配置azkaban web urlazkaban.webserver.url=http://azkaban.xxx.com/
(5)配置plugin插件
在官网下载azkaban-jobtype-x.x.x.tar.gz文件,解压到azkaban安装目录下的plugin目录下,并重命名为jobtypes目录,然后配置commonprivate.properties文件如下:
jobtype.global.classpath=本地hadoop的config文件和lib文件hadoop.classpath=同上#配置各个组件的homehadoop.home=/home/hadoop/hadoop-2.6.0-cdh5.5.0pig.home=/home/hadoop/azkaban/plugins/jobtypes/pighive.home=/home/hadoop/hive-1.1.0-cdh5.5.0spark.home=/home/hadoop/spark-1.6.0-bin-hadoop2.6azkaban.home=/home/hadoop/azkaban/azkaban-solo-server-3.0.0
(6)启动与关闭
启动命令:
- ./bin/azkaban-solo-start.sh
关闭命令:
- ./bin/azkaban-solo-shutdown.sh
至此,Azkaban的单机版安装完成,在浏览器中访问:http://hostname:8081就可以看到Azkaban的UI界面啦!
2、Azkaban界面功能说明
Azkaban主界面中四个标签页,分别对应了它的四大功能模块:
- Projects:每个独立的Flows都对应一个Projects,Flows将在Projects中运行
- Scheduling:显示定时执行任务
- Executing:显示正在执行的任务
- History:显示历史执行任务
由于Projects模块涉及的功能比较多,下面重点介绍一下。点击进入一个Project后,如下:
界面右上角的三个按钮分别可以删除、上传、下载Project,我们编写完成并打包的zip文件,就是在这里上传的。界面中的三个标签页功能如下:
- Flows:工作流程,由多个job组成,点击还可以进入图表界面
选择任意一个job节点,右键点击“Open Job...”可以看到该节点的配置参数,可编辑
- Permissions:用于权限管理
- Project Logs:工程日志
点击Execute Flow按钮开始执行工作流,弹出界面如下:
- Flow View:该界面右边的流程图中的每个节点,都可以Disable和Enable
- Notification:可以配置成功或失败时是否发出邮件。
- Failure Options:当任务流执行失败是选择处理策略,默认是仅完成当前运行的job
- Concurrent:并行任务执行设置
- Flow Parameters:设置执行的参数,用于覆盖全局设置的参数
最后点击Execute按钮即可执行。执行完成的效果如下:
每个执行成功的节点是绿色表示,如果执行失败,则用红色表示。
3、一个简单的例子
下面通过一个列子讲解Azkaban的开发流程。
(1)新建一个文件夹,在文件夹下创建两个文件hello1.job和hello2.job,内容如下:
hello1.job:
type=commandcommand=echo “this is hello1 job”
hello2.job:
type=commandcommand=echo “this is hello2 job”dependencies=hello1
(2)把两个文件打包成hello.zip文件
(3)新建一个Azkaban工程:Hello,并上传hello.zip压缩文件
(4)上传成功后,可以在界面分别看到两个节点
(5)执行并查看输出
(6)点击Details,查看具体日志
(7)在history界面中可以查看到执行完成的任务:
至此,一个完整的任务从开发到执行完成。
- Azkaban入门篇
- Azkaban入门篇
- azkaban入门
- azkaban 入门简介
- azkaban的简单入门
- Azkaban
- 1-Azkaban用户登录篇
- 2-Azkaban作业提交篇
- Hadoop入门之azkaban的安装和使用
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(安装篇)
- Azkaban-开源任务调度程序(安装篇)
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(安装篇)
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(安装篇)
- Azkaban-开源任务调度程序(使用篇)
- LeetCode 97 Interleaving String(Python详解及实现)
- GridView组件常用属性
- WebView整理
- 软件测试之BUG分析定位概述(转载)
- Qt下载地址
- Azkaban入门篇
- 高并发重复插入数据的场景之一
- 推荐一款自助式BI工具
- Collections.unmodifiableMap
- Codeforces Round #371 (Div. 2) A. Meeting of Old Friends【思维,求区间交集】
- Handling truncated messages
- Sphinx 安装
- HDU 【1241】Oil Deposits(DPS)
- HDFS原理综述篇