Azkaban 工作流调度器

1 概述

  1.1 为什么需要工作流调度系统

    a)一个完整的数据分析系统通常都是由大量任务单元组成,shell脚本程序,java程序,mapreduce程序、hive脚本等。

    b)各任务单元之间存在时间先后及前后依赖关系。

    c)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。

  1.2  工作流调度实现方式

    简单的任务调度:直接使用linux的crontab来定义;

    复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban等。

  1.3 常见工作流调度系统

    在hadoop领域,常见的工作流调度器有Oozie, Azkaban,Cascading,Hamake等。

  1.4 Azkaban 与 Oozie对比

    对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。

2 Azkaban 介绍 

  Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

  功能特点:

     Web用户界面

     方便上传工作流

     方便设置任务之间的关系

    调度工作流

    认证/授权(权限的工作)

    能够杀死并重新启动工作流

    模块化和可插拔的插件机制

    项目工作区

    工作流和任务的日志记录和审计

  2.1 Azkaban 安装部署

    2.1.1 准备工作:

      azkaban-web-server-2.5.0.tar.gz

      azkaban-executor-server-2.5.0.tar.gz

      MYSQL

    2.1.2 安装

      1)分别解压webserver和executorServer

      2)创建SSL配置      

 keytool -keystore keystore -alias jetty -genkey -keyalg RSA

      3) 在mysql数据库中创建azkaban库,执行sql脚本create-all-sql-3.39.0-12-gb44c688.sql(注意:该脚本在db模块中,要讲mysql引擎改为innoDB)

    2.1.3 配置文件:

       2.1.3.1  先配置好服务器节点上的时区

        a) 先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可。

        b) 拷贝该时区文件,覆盖系统本地时区配置

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
      2.1.3.2  azkaban web服务器配置 

        conf目录下文件

      Azkaban 工作流调度器     

# 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=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=xxx@126.com
mail.host=smtp.126.com
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links. 
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
mail.user=xxxxxxxx
mail.password=**********
job.failure.email=xxxxxxxx@163.com
job.success.email=xxxxxxxx@163.com
lockdown.create.projects=false
cache.directory=cache
azkaban.properties

相关文章: