Azkaban工作流调度

二、工作流
1.工作流产生背景
工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。
工作流解决的主要问题是:为了实现某个业务目标,利用计算机软件在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
一个完整的数据分析系统通常都是由多个前后依赖的模块组合构成的:数据采集、数据预处理、数据分析、数据展示等。各个模块单元之间存在时间先后依赖关系,且存在着周期性重复。
2.工作流调度实现方式
简单的任务调度:直接使用linux的crontab来定义,但是缺点也是比较明显,无法设置依赖。
复杂的任务调度:自主开发调度平台,使用开源调度系统,比如azkaban、Apache Oozie、Cascading、Hamake等。
3.工作流调度工具之间对比
下面的表格对四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考。
Azkaban工作流调度
三、Azkaban调度器
1.Azkaban介绍
Azkaban是由linkedin(领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
Azkaban工作流调度
Azkaban功能特点:
提供功能清晰,简单易用的Web UI界面
提供job配置文件快速建立任务和任务之间的依赖关系
提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
基于Java开发,代码结构清晰,易于二次开发

2.Azkaban原理架构
Azkaban工作流调度
mysql服务器: 存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等
AzkabanWebServer:对外提供web服务,使用户可以通过web页面管理。职责包括项目管理、权限授权、任务调度、监控executor。
AzkabanExecutorServer:负责具体的工作流的提交、执行。
3.Azkaban三种部署模式
3.1.solo server mode
该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。使用自带的H2数据库。这种模式包含Azkaban的所有特性,但一般用来学习和测试。
3.2.two-server mode
该模式使用MySQL数据库, Web Server和Executor Server运行在不同的进程中。
3.3.multiple-executor mode
该模式使用MySQL数据库, Web Server和Executor Server运行在不同的机器中。且有多个Executor Server。该模式适用于大规模应用。

azkaban安装部署

​ 1、安装包上传解压

​ 2、配置azkaban.properties文件, 修改时区,修改为上海时区

​ default.timezone.id=Asia/Shanghai

​ 3、关闭内存检查

​ plugins/jobtypes/commonprivate.properties

​ 添加memCheck.enabled=false

​ 4、启动azkaban

​ 启动只能在azkaban解压后的目录下进行启动

​ bin/start-solo.sh

​ 5、到浏览器查看

​ 访问 http://192.168.100.212:8081 默认用户名密码azkaban

​ 用户名:azkaban

​ 密码:azkaban
Azkaban工作流调度
5.1初体验测试
http://192.168.100.212:8081/index登录=>Create Project=>Upload zip包 =>execute flow执行一步步操作即可。
创建两个文件one.job two.job,内容如下,打包成zip包。
cat one.job
type=command
command=echo “this is job one”
cat two.job
type=command
dependencies=one
command=echo “this is job two”
创建工程:
Azkaban工作流调度
Azkaban工作流调度
Azkaban工作流调度