三、Azkaban功能总体介绍

三、Azkaban功能总体介绍,第1张

Azkaban是一套任务调度系统,可以调度command、hadoopMR、hive、spark、pig等任务,而且支持自定义plugin。本文将总体介绍Azkaban系统提供的各种功能。

在介绍功能之前,我们先准备一个简单的flow,用于演示。

Azkaban有三个核心的概念:

为了简单起见,本文使用最简单的任务类型:command 作为功能的演示。

编写一个包含两个job的flow的过程如下:

1、新增一个文件夹 command

2、在该文件夹下创建 cmd1.job 文件,内容如下:

3、在该文件夹下创建另外一个文件 cmd2.job,内容如下:

可以看出,flow中的job之间是通过 dependencies 属性进行依赖的。

4、打包成zip文件

打包时是在command目录下进行的,不能直接耐或袭把command目录打包,因为Azkaban要求压缩包解压后就可以看到job文件,而不是包含了一层目录,而且要打包成zip文件,不能是rar格式。command目录内容如下:

打包后的压缩包内容如下:

1、新增一个project,命名为command

新增完成后的界面如下

2、上传zip包

进入command 工程后,点击 Upload 按钮,打开上传界面,选择刚才打包的 command.zip 文件,然后点击Upload 进行上传

上传界面如下:

3、工程主界面功能介绍

(1)Flows:可以看到工程的每个job节点

(2)Permissions:工程的权限信息

(3)Project Logs:工程的 *** 作日志信息

Flows下的Executions是可以看到该任务的历史执行信息,Summary是该任务的汇总信息

我们来重点关注一下 "Execute Flow" 执行按钮的功能

4、执行界面分为以下五个部分

(1)Flow View:查看节点信息

通过dependencies关联的各个job节点,可以在这里看到清晰的依赖关系,其中通过选中job节点后右键,可以编辑该job参数,激活(Enable),冻结(Disable)该节点,这样在执行的时候就可以跳过被冻结的节点,默团禅认节昌兄点是激活的。

(2)Notification:任务执行成功或者失败后进行告警,需要用户填写告警邮箱

(3)Failure Options:当任务失败的时候进行的 *** 作

Finish Current Running:只完成当前运行的job,不会启动其他的job(默认)

Cancel All:立即取消所有的job,并使该flow失败

Finish All Possible:继续执行flow的其他job任务

(4)Concurrent:并行执行选项

(5)Flow Parameters:全局运行参数,可以覆盖job里的参数值

任务的执行可以分为立即执行和定时执行

1、立即执行

点击 Execute 按钮,就可以执行任务,系统会先生成一个execid,作为执行该任务的唯一标志

2、定时执行

点击 Schedule 按钮,任务进入定时执行配置界面,使用的是cron表达式,如下:

这是 Azkaban 3.10.0版本提供的最新的功能。

由上一步提交的定时执行任务,会在这个界面中显示出来。

用户可以点击"Set SLA"按钮,指定任务在规定的时间内执行完成,否则就进行告警,如下图

Currently Running:当前正在执行的任务

Recently Finished:最近已经完成在任务

任务只要提交了,都会在这里显示出来。如果运行的任务过多,用户可以通过条件过滤查询,比如:

Quick Search:根据flow名称查询

Advanced Filter:高级条件查询

用户可以通过点击 Execution Id查看该任务的执行日志情况

(1)点击任务的 Execution Id,比如上图中的 "1088",进入任务执行情况界面,在该界面中,用户可以看到每个节点执行是否成功,如下:

(2)查看节点执行日志

点击 Job List 执行标签页,每一项都有Details链接,在这里可以看到任务的执行日志

任务执行日志如下:

至此,Azkaban的大概功能介绍完成。

azkaban的工作流中的参数可以分为如下几个类型:azkaban UI 页面输入参数, 环境变量参数, job作业文件中定义的参数,工作流的用户定义的属性文件,上游作业传递给下游的参数,工作流运行时产生族拆的系统参数,job的common参数等. 参数的作业范围分类,对当前job有效局部有局穗亮效,对整个工作流全局有效. 1. Job配置中的参数桐宽全局参数,在整个工作流的作业文件配置中,都可以通过 ${参数名} 的方式引用使用. common参数配置 除了type,command,decpenden

大数据调度系统,是整个离线批处理任务和准实时计算计算任务的驱动器。这里我把几个常见的调度系统做了一下分类总结,结合目前阿里云上的MaxCompute中的调度系统,做个对比。

Oozie是一个workflow(工作流)协调系统,是由Cloudera公司贡献给Apache的,主要用来管理Hadoop作业(job)。

统一调度hadoop系统中常见的mr任务启动、Java MR、Streaming MR、Pig、Hive、Sqoop、Spark、Shell等。

配置相关的调度任务复杂,依赖关系、时间触发、事件触发使用xml语言进行表达。

任务状态、任务类型、任务运行机器、创建时间、启动时间、完成时间等。

支持启动/停止/暂停/恢复/重新运行:支持启动/停止/暂停/恢复/重新运行。

可以通过DB支持HA(高可用)。调度任务时可能出现死锁,依赖当前集群版本,如更新最新版,易于现阶段集群不兼容。

Azkaban是由Linkedin公司推郑灶出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系,这个依赖关系必须是无环的,否则会被视为无效的工作流。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

command、HadoopShell、Java、HadoopJava、Pig、Hive等,支持插件式扩展。

实际项目中经常有这些场景:每天有一个大任务,这个大任务可以分成A,B,C,D四个小任务,A,B任务之间没有依赖关系,C任务依赖A,B任务的结果,D任务依赖C任务的结果。一般的做法是,开两个终端同时执行A,B,两个都执行完了再执行C,最后再执行D。这样的话,整个的执行过程都需要人工参加,并且得盯着各任务的进度。但是我们的很多任务都是在深更半夜执行的,通过写脚本设置crontab执行。其实,整个过程类似于一个有向无环图(DAG)。每个子任务相当于大任务中的一个流,任务的起点可以从没有度的节点开始执行,任何没有通路的节点之间可以同时执行,比如上述的A,B。总结起来的话,我们需要的就是一个工作流的调度器,而Azkaban就是能解决上述问题的一个调度器。

提供job配置文件快速建立任务和任务之间的依赖关系,通过自定义DSL绘制DAG并打包上传。

只能看到任务状态。

只能先将工作流杀死在重新运行。

通过DB支持HA,任务太多时会卡死服务器。

Airflow 是 Airbnb 开源的一个用 Python 编写的调度工具。于 2014 年启动,2015 年春季开源,2016 年加入 Apache 软件基金会的孵化计划。Airflow 通过 DAG 也即是有向非循环图来定义整个工作流,因而具有非常强大的表达能力。

支持Python、Bash、HTTP、Mysql等,支持Operator的自定义扩展。

需要使用Python代码来定义流程。

不直观。

杀掉任务,重启。

任务过多会卡死。

XXL-JOB是一个开源的,具有丰富的任务管理功能以及高性能,高可用等特点的轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。

基于Java。

无,但是可以配置任务之间的依赖。

可以暂停、恢复。

支持HA。任务是基于队列的,轮询机制。

DolphinScheduler是今年(2019年)中国易观公司开源的一个调度系统,在今年美国时间2019年8月29号,易观开源的分布式任务调度引擎DolphinScheduler(原EasyScheduler)正式通过顶级开源组织Apache基金会的投票决议,根据Apache基金会邮件列喊穗扮表显示,在包含11个约束性投票(binding votes)和2个无约束性投票(non-binding votes)的投票全部持赞同意见,无弃权票和反对票,投票顺利通过,这样便以全票通过的优秀表现正式成为族胡了Apache孵化器项目。

Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

支持传统的shell任务,同时支持大数据平台任务调度:MR、Spark、SQL(mysql、postgresql、hive/sparksql)、python、procedure、sub_process。

所有流、定时 *** 作都是可视化的,通过拖拽来绘制DAG,配置数据源及资源,同时对于第三方系统,提供api方式的 *** 作。

任务状态、任务类型、重试次数、任务运行机器、可视化变量,以及任务流执行日志。

支持暂停、恢复、补数 *** 作。

支持HA,去中心化的多Master和多Worker。DolphinScheduler上的用户可以通过租户和hadoop用户实现多对一或一对一的映射关系。无法做到细节的权限管控。

任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会 *** 作机器卡死。

调度器使用分布式调度,整体的调度能力会随集群的规模线性正常,Master和Worker支持动态上下线,可以自由进行配置。

可以通过对用户进行资源、项目、数据源的访问授权。支持,可视化管理文件,及相关udf函数等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12138695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存