azkaban简介(代码片段)

Binge-和时间做朋友 Binge-和时间做朋友     2022-12-01     123

关键词:

什么是任务调度

大数据平台技术框架支持的开发语言多种多样,开发人员的背景差异也很大,这就产生出很多不同类型的程序(任务)运行在大数据平台之上,如:MapReduce、Hive、Pig、Spark、Java、Shell、Python 等。

这些任务需要不同的运行环境,并且除了定时运行,各种类型之间的任务存在依赖关系,一张简单的任务依赖图如下:

image-20210519224232022

常见任务调度工具

  • crontab (Linux 自带命令,使用方式简单,适合不是非常复杂的场景,比如只按照时间来调度)
  • oozie( Hadoop 自带的开源调度系统,使用方式比较复杂,适合大型项目场景)
  • azkaban(一个开源调度系统,使用方式比较简单,适合中小型项目场景)
  • 企业定制开发(企业自研的调度系统,不开源)

Azkaban 是什么

Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,Azkaban 使用 job 文件建立任务之间的依赖关系,并提供 Web 界面供用户管理和调度工作流

Azkaban 特点

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

  • Web 用户界面
  • 方便上传工作流
  • 方便设置任务之间的关系
  • 调度工作流
  • 认证/授权(权限的工作)
  • 能够杀死并重新启动工作流
  • 模块化和可插拔的插件机制
  • 项目工作区
  • 工作流和任务的日志记录和审计

Azkaban 与 Oozie 对比

Azkaban 和 Oozie 是市面上最流行的两种调度器。总体来说,Ooize 相比 Azkaban 是一个重量级的任务调度系统,功能全面,但部署和使用也更复杂,比较适合作为大型项目的任务调度系统。而 Azkaban 相对而言,配置和使用更为简单,能够满足常见的任务调度,比较适合作为中小型项目的任务调度系统。

Azkaban 和 Oozie 详情对比如下:

  • 功能

    两者均可以调度 mapreduce,pig,java,脚本工作流任务
    两者均可以定时执行工作流任务

  • 工作流定义

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

  • 工作流传参

    Azkaban 支持直接传参

    Oozie 支持参数和 EL 表达式

  • 定时执行

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

  • 资源管理

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

  • 工作流执行

    Azkaban 有两种运行模式,分别是单机模式和集群模式
    Oozie 作为工作流服务器运行,支持多用户和多工作流

  • 工作流管理

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

Azkaban 运行模式及架构

image-20210519220432495

Azkaban 三大核心组件
  • 关系型元数据库(MySQL)
  • Azkaban Web Server
  • Azkaban Executor Server
Azkaban有两种部署方式
  • solo server mode(单机模式)

    WebServer 和 ExecutorServer 在同一个进程

  • cluster server mode(集群模式)

    WebServe r和 ExecutorServer 运行在不同进程,并用数据库保存定义及状态

    • 单个Executor
    • 多个Executor

Azkaban Web Server

AzkabanWebServer 是 Azkaban 的主要管理者,负责项目管理、身份验证、调度和监控执行,并且为用户界面

Azkaban Executor

提交和执行工作流,记录工作流日志,和 Azkaban WebServer 可以在同一台服务器,也可部署在独立的机器。把 Executor 单独分开有几个好处:

  • 在多 Executor 模式下可以方便扩展
  • 工作流在某一个 Executor 挂掉,可以在另一个 Executor 上重试
  • 可以滚动升级,从而不影响调度

Azkaban 元数据库

image-20210519220946638

Azkaban 任务调度步骤

  • Azkaban 新建项目
  • 在 Azkaban Web 界面创建 Project
  • 创建 job 文件
  • 将文件压缩为 zip 文件
  • 上传 zip 文件到 Web 界面
  • 执行调度

Azkaban 常见任务类型

执行 shell 命令
type=command
command=echo \'hello\'
执行 shell 脚本
type=command
command=sh hello.sh
执行 Spark 程序
type=command
command=/usr/install/spark/bin/spark-submit --class com.test.AzkabanTest test-1.0-SNAPSHOT.jar
hive 命令\\脚本
type=command
command=beeline -u jdbc:hive2://localhost:10000 -n hive -p hive -f \'test.sql\'
执行 MapReduce 程序
type=command
command=$HADOOP_HOMEbin/hadoop jar hadoop-mapreduce-examples-2.8.0.jar
wordcount $input $output

azkaban(代码片段)

1.Azkaban的安装部署azkaban的资源下载http://azkaban.github.io/downloads.html1.1.配置mysql1.1.1.修改mysql的编码(1)启动mysqlservicemysqldstart(2)登录mysqlmysql-uroot-p(3)执行编码显示showvariableslike‘character%‘;(4)在linux下修改mysql配 查看详情

大数据高级开发工程师——工作流调度器azkaban(代码片段)

文章目录工作流调度器AzkabanAzkaban介绍为什么需要工作流调度系统工作流调度实现方式Azkaban简介Azkaban架构Azkaban基本架构Azkaban架构的三种运行模式1.soloservermode(单机模式)2.twoservermode3.multipleexecutormodeAzkaban安装部署编译azkaban1.... 查看详情

azkaban(代码片段)

 Azkaban安装部署 https://azkaban.github.io/azkaban/docs/2.5/ 安装Azkaban1)在/opt/module/目录下创建azkaban目录[[email protected]module]$mkdirazkaban2)解压azkaban-web-server-2.5.0.tar.gz、azkaban-executor-server-2.5.0.tar.gz、azkaban-sql-script-2.5.0.tar.gz到/opt... 查看详情

azkaban的部署(代码片段)

...过多,而且维护繁琐,属于重量级系统.所以最终我选择使用azkaban.网上关于oozie和azkaban比较的文章很多,有兴趣可以自行百度.接下来说说azkaban的部署.一.部署模式单机模式(solo)单机集群(1个webSer 查看详情

如何将项目上传至azkaban上运行(代码片段)

文章目录一、编写项目代码二、编写Azkaban必须文件三、使用Azkaban执行项目代码一、编写项目代码packageAzkaban;importorg.apache.spark.SparkConf;importorg.apache.spark.api.java.JavaRDD;importorg.apache.spark.api.java.JavaSparkContext;importjava. 查看详情

azkaban(代码片段)

Azkaban1Azkaban定义一个完整的大数据项目,它是由许多不同的任务单元组成;比如:shell脚本,mapreduce程序,hive脚本,spark程序等哪些单元先做,哪些单元后做,需要由既定的流程,这个流程的指... 查看详情

azkaban搭建---azkaban3.25.0搭建细则超实用(代码片段)

一、前述Azkaban是一个工作流调度工具,因为需要各个任务之间有依赖关系,传统的Crontab任务已经不能满足。所以需要建立一套工作流引擎。相比Ooize来说,Azkaban的优势是作为一个客户端来提供任务的提交。而Ooize是将任务随机... 查看详情

azkaban使用(代码片段)

...echo'hello'将job资源文件打包成zip文件zipcommand.job通过azkaban的web管理平台创建project并上传job压缩包首先创建Project上传zip包 启动执行该job  2、job依赖调度第一个job: 查看详情

最简单之安装azkaban(代码片段)

一,拉取源码构建gitclonehttps://github.com/azkaban/azkaban.gitcdazkaban;./gradlewbuildinstallDist二,创建数据库,将sql文件导入数据库CREATEDATABASEazkaban;useazkaban;source/home/azkaban/azkaban-db/build/sql/create-all-sql-3.82.0-2-gd8a86ee.sql;三,修改数据库数据包大... 查看详情

azkaban的简单使用(代码片段)

简单使用createjob右上角  project创建成功创建job并上传至该project[[email protected]~]#catcommand.job#command.jobtype=commandcommand=echo‘helloazkaban‘[[email protected]~]#[[email protected]~]#zi 查看详情

03-azkaban安装部署(代码片段)

00-前言初步撰写了azkaban  MultiExecutorServer模式的部署说明,只是在单一节点上同时部署了web以及excutor。多excutor的情况可能会稍有不一样,待完善01-环境介绍1.基础环境介绍CentOS7azkaban3.81.0jdk8注意:需要提前在集群所有节点... 查看详情

centos中安装azkaban2.5(代码片段)

必备软件yuminstallgit-y单机安装步骤gitclonehttps://github.com/azkaban/azkaban.gitcdazkaban;./gradlewbuildinstallDistcdazkaban-solo-server/build/install/azkaban-solo-server;bin/start-solo.sh#openhttp://localhost:8081/bin/shutdown-solo.sh#当然,这个也需要你的网络环境比较好... 查看详情

原创大叔问题定位分享(39)azkaban定期出现fullgc(代码片段)

azkaban3.80.1现象azkaban集群中的节点每隔几个月会出现一次fullgc排查1jmap-histo发现有大量的log4j对象和Hashtable对象,以下为大于1M的对象num#instances#bytesClassdescription------------------------------------------------------------------------ 查看详情

大数据azkaban失败任务预警(代码片段)

...警案例2.1第三方告警平台集成2.2测试1默认邮件预警案例Azkaban默认支持通过邮件对失败的任务进行报警,配置方法如下:1)在azkaban-web节点hadoop102上,编辑/opt/module/azkaban/azkaban-web/conf/azkaban.properties,修改如下... 查看详情

数据仓库azkaban调度器(代码片段)

GMV指标获取的全调度流程import.job文件,第一步,从mysql导入数据type=commanddo_date=$dtcommand=/home/atguigu/bin/sqoop_import.shall$do_dateods.job文件type=commanddo_date=$dtdependencies=importcommand=/home/atguigu/bin/od 查看详情

⼯作流调度系统——azkaban(代码片段)

文章目录Azkaban介绍Azkaban使⽤HDFS任务调度MAPREDUCE任务调度HIVE脚本任务调度Azkaban介绍Azkaban是由linkedin(领英)公司推出的⼀个批量⼯作流任务调度器,⽤于在⼀个⼯作流内以⼀个特定的顺序运⾏⼀组⼯作和流程。Azkaban... 查看详情

azkaban2.0版本及以上创建工作流(代码片段)

来源:https://azkaban.readthedocs.io/en/latest/createFlows.html CreatingFlowsThissectioncovershowtocreateyourAzkabanflowsusingAzkabanFlow2.0.Flow1.0willbedeprecatedinthefuture.Flow2.0BasicsStep1:Cre 查看详情

azkaban的部署以及简单使用(代码片段)

...工作流调度器??在hadoop领域,常见的工作流调度器有Oozie,Azkaban,Cascading,Hamake等。(3)Oozie与Azkaban的对比??目前企业中最流行的两种调度器是Oozie与Azkaban。总的来说ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使... 查看详情