本文共 1066 字,大约阅读时间需要 3 分钟。
Airflow和Azkaban这两个组件对大数据集群来说是相对独立的,都是可以独立于集群安装,所以不管是cdh还是hdp集群,都可以选择其中之一作为集群的任务调度系统。
我们公司有2套集群,国内国外各一套,然后因为历史原因国内用的是Azkaban,国外用的是Airflow,考虑到以后技术栈的统一,打算慢慢将两个集群的组件统一化。 最后选择airflow作为
调度组件 | Airflow | Azkaban |
---|---|---|
web界面 | 该有的功能都有,但是复杂不直观,甚至有点难用 | 简单,工作流依赖清晰,易上手 |
工作流层级 | dag - - tasks | project - - flows - - tasks |
工作流语法 | python脚本 | 自定义DSL,key/value的语法 |
跨dag/project依赖 | 通过【ExternalTaskSensor】对其他dag依赖 | 不支持跨project依赖 |
易用程度 | 安装部署复杂,包含包括WebServer、Scheduler、Worker | 简单,开箱即用 |
回填(回补执行) | 支持,通过airflow内部变量如{ { ds }}实现 | 不支持 |
手动依赖执行 | 支持,airflow在手动执行某个任务时,可以选择同时执行该任务的上游和下游任务。 | 不支持,需要手动选择哪些任务需要执行 |
调度中心HA | 不支持 | 不支持 |
执行器HA | 支持 | 支持 |
单点故障 | 存在主节点故障风险 | 存在主节点故障风险 |
权限管控 | 支持,用户级别 | 支持,用户级别 |
1、跨dag/project依赖: 这个是指某些任务需要依赖另外的dag/project中的任务,比如一些公共维度表的更新任务。
2、回补执行: 错过了某一次执行时间之后,往回去补充执行的行为。主要是日期变量的保留。 3、airflow.cfg/max_active_runs_per_dag: 这个参数是airflow中只允许每个dag同一时间内只有1天被调度起来,可以防止airflow恐怖的回填行为。
1、ariflow在功能上要比azkaban完整强大。
2、airflow在部署运维以及使用上要比azkaban复杂,成本高,无论是学习还是运维。 3、airdlow跟azkaban相比,功能上最大的优势是支持【回填】和【跨dag依赖】。 4、综上,azkaban基本上可以满足日常的调度任务需求,所以如果需要轻量级的调度组件的话,可以考虑使用azkaban;如果想要功能更完善的调度系统,可以考虑使用airflow,不过要忍受airflow不太友好的web界面。转载地址:http://iulwb.baihongyu.com/