小菜鸟的个人博客已经正式上线且对外开放啦…

博客访问地址:小菜鸟的大梦想

欢迎各位同学扫码关注本人公众号 ↓↓↓ 更多优质内容将 首发 公众号


Azkaban简述

Azkaban is a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web user interface to maintain and track your workflows.

Azkaban 是在LinkedIn上创建的批处理工作流作业调度程序,用于运行Hadoop作业。Azkaban通过作业依赖性解决订单,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。

特征:

  • 兼容任何版本的Hadoop
  • 易于使用的Web UI
  • 简单的Web和http工作流上传
  • 项目工作区
  • 调度工作流程
  • 模块化和可插入
  • 身份验证和授权
  • 跟踪用户操作
  • 有关失败和成功的电子邮件提醒
  • SLA警报和自动查杀
  • 重试失败的工作

以上来自官方介绍,详情见 官网

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

1、一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等
2.、各任务单元之间存在时间先后及前后依赖关系
3、为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下:
1、通过Hadoop先将原始数据同步到HDFS上;
2、借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
3、需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
4、将明细数据进行各种统计分析,得到结果报表信息;

需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

工作流调度的实现方式

  • 简单的任务调度:直接使用linux的crontab来定义;
  • 复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban、airflow等

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

各种调度工具特性对比

下面的表格对上述四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考:

特性 Hamake Oozie Azkaban Cascading
工作流描述语言 XML XML (xPDL based) text file with key/value pairs Java API
依赖机制 data-driven explicit explicit explicit
是否要web容器 No Yes Yes No
进度跟踪 console/log messages web page web page Java API
Hadoop job调度支持 no yes yes yes
运行模式 command line utility daemon daemon API
Pig支持 yes yes yes yes
事件通知 no no no yes
需要安装 no yes yes no
支持的hadoop版本 0.18+ 0.20+ currently unknown 0.18+
重试支持 no workflownode evel yes yes
运行任意命令 yes yes yes yes
Amazon EMR支持 yes no currently unknown yes

Azkaban与Oozie对比

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

  • 功能
    两者均可以调度mapreduce、pig、java、shell脚本工作流任务
    两者均可以定时执行工作流任务

  • 工作流定义
    Azkaban使用Properties文件定义工作流
    Oozie使用XML文件定义工作流

  • 工作流传参
    Azkaban支持直接传参,例如:${input}
    Oozie支持参数和EL表达式,例如:${fs:dirSize(myInputDir)}

  • 定时执行
    Azkaban的定时执行任务是基于时间的
    Oozie的定时执行任务基于时间和输入数据

  • 资源管理
    Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
    Oozie暂无严格的权限控制

  • 工作流执行
    Azkaban有两种运行模式,分别是soloserver mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)
    Oozie作为工作流服务器运行,支持多用户和多工作流

  • 工作流管理
    Azkaban支持浏览器以及ajax方式操作工作流
    Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流

Azkaban安装部署

编译

使用版本:azkaban3.47.0

tar -zxvf azkaban3.47.0.tar.gz -C ../servers/
cd /export/servers/azkaban-3.47.0/
yum -y install git
yum -y install gcc-c++
./gradlew build installDist -x test

编译成功如下图:

编译之后的文件

  • azkaban-exec-server
    /export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions

  • azkaban-web-server
    /export/servers/azkaban-3.47.0/azkaban-web-server/build/distributions

  • azkaban-solo-server
    /export/servers/azkaban-3.47.0/azkaban-solo-server/build/distributions

  • execute-as-user.c
    /export/servers/azkaban-3.47.0/az-exec-util/src/main/c

  • 数据库脚本文件
    /export/servers/azkaban-3.47.0/azkaban-db/build/install/azkaban-db

azkaban单服务模式

azkaban的solo server使用的是一个单节点的模式来进行启动服务的,只需要一个azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz的安装包即可启动,所有的数据信息都是保存在H2这个azkaban默认的数据当中。

cd /export/softwares
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf
vim azkaban.properties# 更改时区
default.timezone.id=Asia/Shanghai# 启动:
cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT
bin/start-solo.sh(一定要采用这种方式启动)

访问:https://ip:port/

解决job任务一直处于running的状态

cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/ jobtypes/
vim  commonprivate.properties

重启azkaban

azkaban两个服务模式

  • Azkaban Web服务安装包
    azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

  • Azkaban执行服务安装包
    azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz

  • 编译之后的sql脚本
    create-all-sql-0.1.0-SNAPSHOT.sql

  • C程序文件脚本
    execute-as-user.c程序

  • 安装Mysql数据库
    省略…

安装完之后需执行

mysql -uroot -p# 执行
CREATE DATABASE azkaban;
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
GRANT all privileges ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION; source /export/softwares/create-all-sql-0.1.0-SNAPSHOT.sql;
  • 解压azkaban安装包
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
  • 安装SSL安全认证
cd /export/servers/azkaban-web-server-3.47.0
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

web server安装

cp -r /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf/ /export/servers/azkaban-web-server-3.47.0/
  • 修改azkaban-web-server的配置文件
cd /export/servers/azkaban-web-server-3.47.0/conf
vim azkaban.properties
#### 配置以下内容# Azkaban Personalization Settings
azkaban.name=MyAzkaban
azkaban.label=My 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=h2
#h2.path=./h2
#h2.create.tables=true database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100 # Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=true
jetty.maxThreads=25
jetty.port=8081jetty.keystore=/export/servers/azkaban-web-server-3.47.0/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=/export/servers/azkaban-web-server-3.47.0/keystore
jetty.trustpassword=azkaban # Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
# 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
job.failure.email=
job.success.email=# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
  • 添加log4j.properties的配置文件
cd /export/servers/azkaban-web-server-3.47.0/conf
vim log4j.properties#### 配置以下内容
log4j.rootLogger=INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] %m%n
log4j.category.velocity=INFO

executor server安装

cp -r /export/servers/azkaban-web-server-3.47.0/conf/ /export/servers/azkaban-exec-server-3.47.0/
  • 添加插件
mkdir -p /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
cp /export/softwares/execute-as-user.c /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes/yum -y install gcc-c++
cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
gcc execute-as-user.c -o execute-as-user
chown root execute-as-user
chmod 6050 execute-as-user
  • 添加配置文件
cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
vim commonprivate.properties#### 配置以下内容
execute.as.user=false
memCheck.enabled=false
azkaban.native.lib=/export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes

启动web-server

bin/start-web.sh

启动exec server

bin/start-exec.sh

访问

https://ip:port/

Azkaban任务调度工具简述相关推荐

  1. 大数据任务调度工具 Apache DolphinScheduler

    文章目录 大数据任务调度工具 Apache DolphinScheduler 项目亮点 DolphinScheduler 简介 调度系统选型 为什么大数据要选择 DolphinScheduler Do ...

  2. Java定时任务调度工具

    tags: 定时任务调度, title: Java定时任务调度工具 为什么要使用定时任务调度工具? 在最近的开发中,想开发一个"个人备忘录"的功能,实际上就是用户在指定某个时间点后 ...

  3. Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】

    1 Azkaban任务调度管理 1.1 执行任务的脚本编写和说明 在做任务调度的过程中,要编写相应的脚本. -rwxrwxrwx 1 root root 809 6月 12 19:52 auto-ex ...

  4. Java定时任务调度工具详解之Timer篇

    Java定时任务调度工具详解之Timer篇 https://segmentfault.com/a/1190000009542398

  5. Airflow2.2.5任务调度工具

    Airflow2.2.5任务调度工具 一.Airflow介绍 1.基本概念 Airflow是一个以编程方式创作,可进行调度和监控工作流程的开源平台.基于有向无环图(DAG),airflow可以定义一组 ...

  6. Java定时任务调度工具之Timer

    Java定时任务调度工具详解之Timer 导航: Java定时任务调度工具详解之Timer 一. 概述 1.1 课程介绍 1.2 Timer简介 1.3 实战演练 二. timer定时函数的用法 2. ...

  7. 工作流workflow任务调度工具argo

    转载请注明出处:工作流workflow任务调度工具argo argo简介和原理 argo是一个基于 kubernetes CRD(自定义资源) 实现的一个 Workflow(工作流) 开源工具,基于 ...

  8. 简单强大的Python库:Schedule—实用的周期任务调度工具

    如果你想在Linux服务器上周期性地执行某个 Python 脚本,最出名的选择应该是 Crontab 脚本,但是 Crontab 具有以下缺点: 1.不方便执行秒级的任务. 2.当需要执行的定时任务有 ...

  9. ctf竞赛隐写术分析工具简述

    ctf竞赛隐写术分析工具简述 隐写术,即隐藏书写的信息的技术隐写术属于信息隐藏技术当中的一种,旨在保护秘密信息的安全传输. ctf比赛中隐写术现状 拿到图片后大致从以下三个方面入手 ①Binwaik+ ...

最新文章

  1. 来自 Google 的 R 语言编码风格指南
  2. 我的android绘图学习笔记(二)
  3. QT在windows平台安装使用MInGW编译
  4. 【转】Linux开机启动管理---systemd使用
  5. ShowDoc 软件开发团队接口文档管理利器
  6. 大力智能台灯与飞利浦台灯 智能调光功能体验
  7. threejs渲染器剔除模式
  8. Dom4j工具--XML的DOM解析(下)--写操作
  9. python 深度 视差 计算_2,Learn about Parallax(视差贴图)
  10. JDK8新特性(六)之Stream流的forEach()方法
  11. python 多线程,进程的理解
  12. python杂记-集合和字典
  13. L1-039 古风排版 (20 分)—团体程序设计天梯赛
  14. Double 中的 NAN与INFINITY
  15. cmakelists语法_cmake使用教程(六)-蛋疼的语法
  16. 可道云 docker 群晖_利用群晖NAS同步文献
  17. BoundsChecker使用
  18. Excel金额大小写转换公式
  19. 微信小程序入门---01
  20. 信息论领域内的计算方法仿真,Mutual Information,互信息;

热门文章

  1. php hhvm 死循环,hhvm官方终止支持php
  2. 西方的二分法和东方的三分法
  3. 华为OD机试用Python实现 -【广播服务器】
  4. 电脑IP地址查询,3个实用方法!
  5. dapper oracle 参数,c# – 使用dapper查询oracle的集合参数
  6. 基于jsp+java+ssm超市蔬菜信息管理系统-计算机毕业设计
  7. linux查看cpt硬盘命令,常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询...
  8. jquery dom 节点append、before、after、prepend、insertBefore、empty、remove等添加、移除操作汇总
  9. DOTA2界面Win10任务栏无法隐藏
  10. 一分钟让你了解芯片工作的心脏——晶振