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 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

 <azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user username="admin" password="admin" roles="admin,metrics" />
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>

azkaban-users.xml

      2.1.3.3  azkaban 执行器配置
# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# 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
#执行服务器配置
executor.port=12321
executor.connector.stats=true
executor.maxThreads=50
executor.flow.threads=30
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes

azkaban.properties

    详细配置请参考:http://azkaban.github.io/azkaban/docs/latest/     (3.0版本编译完后web和exec中没有配置文件 需要将solo中的配置文件复制过去)

      2.1.4 启动

        在azkaban web服务器目录下执行启动命令

        bin/azkaban-web-start.sh

        注:在web服务器根目录运行

  

        在执行服务器目录下执行启动命令

        bin/azkaban-executor-start.sh

        注:只能要执行服务器根目录运行

        启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码,点击 login.

3 实战

  Azkaba内置的任务类型支持command、java。

  3.1 Command类型单一job示例

    a) 创建job描述文件

      vi command.job      

#command.job
type=command
command=echo 'hello'

    b)将job资源文件打包成zip文件   

zip command.job

    c) 通过azkaban的web管理平台创建project并上传job压缩包

    首先创建project

    

    上传zip

    

    d)启动执行该job

   

  3.2 Command类型多job工作流flow

    a)创建有依赖关系的多个job描述

      第一个job:foo.job

# foo.job
type=command
command=echo foo

      第二个job:bar.job依赖foo.job

# bar.job
type=command
dependencies=foo
command=echo bar

    b)将所有job打成一个zip包

    

    c) 在azkaban 的web管理界面创建工程并上传zip包

    d)启动工作流flow

  3.3 HDFS操作任务

# fs.job
type=command
command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop fs -mkdir /azaz

  3.4 MapReduce任务

# mrwc.job
type=command
command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop jar hadoop-mapreduce-examples-2.6.1.jar wordcount /wordcount/input /wordcount/azout

   将所有资源打包成zip

  

  3.5 HIVE脚本任务

    Hive脚本: test.sql

use default;
drop table aztest;
create table aztest(id int,name string) row format delimited fields terminated by ',';
load data inpath '/aztest/hiveinput' into table aztest;
create table azres as select * from aztest;
insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;

    Job描述文件:hivef.job

# hivef.job
type=command
command=/home/hadoop/apps/hive/bin/hive -f 'test.sql'

 

Azkaban 工作流调度器的更多相关文章

  1. Azkaban工作流调度器

    Azkaban工作流调度器 在Hadoop领域常用的工作流调度系统 Oozie,Azkaban,Cascading,Hamake等等. 性能对比: 安装: 创建ssl配置 keytool -keyst ...

  2. azkaban工作流调度器及相关工具对比

    本文转载自:工作流调度器azkaban,主要用于架构选型,安装请参考:Azkaban安装与简介,azkaban的简单使用 为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: ...

  3. 工作流调度器azkaban(以及各种工作流调度器比对)

    1:工作流调度系统的作用: (1):一个完整的数据分析系统通常都是由大量任务单元组成:比如,shell脚本程序,java程序,mapreduce程序.hive脚本等:(2):各任务单元之间存在时间先后 ...

  4. 工作流调度器azkaban

    为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 各任务单元之间存在时间先后及前后依赖关系 为了很 ...

  5. 工作流调度器azkaban2.5.0的安装和使用

    为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 各任务单元之间存在时间先后及前后依赖关系 为了很 ...

  6. 【Hadoop离线基础总结】工作流调度器azkaban

    目录 Azkaban概述 工作流调度系统的作用 工作流调度系统的实现 常见工作流调度工具对比 Azkaban简单介绍 安装部署 Azkaban的编译 azkaban单服务模式安装与使用 azkaban ...

  7. 07_Azkaban工作流调度器简介及其安装

    Azkaban介绍 Azkaban是一个Linkedin开源的一个批量工作流任务调度器.用于在一个工作流内以一个特定的顺序运行一组工作和流程. Azkaban定义了一种KV文件格式来建立任务之间的依赖 ...

  8. 大数据学习——azkaban工作流调度系统

    azkaban的安装部署 在/root/apps 1目录下新建azkaban文件夹 上传安装包到azkaban 2解压 .tar.gz 3删掉安装包 [root@mini1 azkaban]# .ta ...

  9. 工作流调度系统Azkaban的简介和使用

    1 概述 1.1 为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 l 各任务单元之间存在时间 ...

随机推荐

  1. python3通过qq邮箱发送邮件

    python3通过qq邮箱发送邮件 0.了解qq邮箱的SMTP QQ邮箱 POP3 和 SMTP 服务器地址设置如下: 邮箱 POP3服务器(端口995) SMTP服务器(端口465或587) qq. ...

  2. UVA 12230 Crossing Rivers

    嘟嘟嘟 虽然分类是期望dp,不过好像是最水的 因为在陆地上的时间和概率是固定的,所以只用考虑过河的期望时间. 对于一条河p, l, v,p好像没什么用……不管了,首先期望时间我觉得可以这么算:期望时间 ...

  3. Mysql注入攻击与防御(思维导图笔记)

  4. PHP面试系列 之Linux(六)---- 面试题整理

    1.shell命令 top:查看有哪些系统进程正在运行.该命令提供了实时对系统处理器状态的监控,它能够实时显示系统中各个进程的资源占用情况.该命令可以按照对CPU.内存使用和执行时间对系统任务进程进行 ...

  5. 非接触式读卡器13.56MHZ芯片:SI522

    对于现在的智能锁市场需求竞争极大,中小型厂家月销量更是在慢慢增长.刷卡功能更是智能锁的标配功能,当然13.56Mhz芯片现在讲究的就是超低功耗,为满足市场需求专注于物联网多年的中科微强力推出了13.5 ...

  6. CSS3 - 新单位vw、vh、vmin、vmax使用详解(附样例)

    像 px.em 这样的长度单位大家肯定都很熟悉,前者为绝对单位,后者为相对单位.CSS3 又引入了新单位:vw.vh.vmin.vmax.下面对它们做个详细介绍. 一.基本说明 1,vw.vh.vmi ...

  7. (转)解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...

  8. Linux BLE 基于 树莓派

    1.参考资料:Linux(RaspberryPi)上使用BLE低功耗蓝牙 使用bluez协议栈方法有用 2.Linux下Bluez的编程实现 3.和菜鸟一起学linux之bluez学习记录2 4.BL ...

  9. 寻找最小的k个数(四种方法)

    1 使用从大到小的优先队列保存最小的K个数,每次取出K个数之后的其余数和堆顶元素比较,如果比堆顶元素小,则将堆顶元素删除,将该元素插入 void topK(int arr[],int n,int k) ...

  10. Oracle 11g DataGuard搭建(一) - 单节点到单节点

    (一)DataGuard概要 DataGuard中文称为”数据卫士“,提供了数据库高可用性.数据保护和灾难恢复的功能.DataGuard通过建立primary数据库和standby数据库来确立参照关系 ...