在介绍功能之前,我们先准备一个简单的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函数等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)