为什么选择Apache Airflow作为调度系统的7大理由

这篇文章主要想阐述使用Apache Airflow作为调度系统的好处,尽可能客观的基于数据来说明情况,避免自夸自擂。

0.社区活跃

我们从github 的 airflow contributors 页面可以看到2个核心的指标:
截至2021年06月06日,Star 数已经达到了21.7k, Fork数达到了8.6k,其代码的commit数目更是逐年递增.
为什么选择Apache Airflow作为调度系统的7大理由_第1张图片
在Airflow的github主页面可以看到,现有1,575个用户对airflow进行了贡献。且有400多家公司登记了正在使用Apache Airflow,实际的用户数远超这个数据。
Apache Airflow有良好的社区进行支持,通过Email/Slack/Github issue/Stackoverflow等方式和社区成员进行沟通,并能够得细致的回复。

1.文档/制度/流程完善

Apache Airflow的文档非常完善,包括基本的概念解释,安装部署方式,最新的特性说明,架构原理说明.
为什么选择Apache Airflow作为调度系统的7大理由_第2张图片
各个Operator还有how to教程,简洁清晰的说明了如何使用特定的Operator,我们只要参照文档中的例子就能很快的上手一个新的Operator.
为什么选择Apache Airflow作为调度系统的7大理由_第3张图片
其开发环境搭建/贡献指南/晋升为Committer的规则都在github上写的特别的清楚,照着步骤走就很容易的上手,且社区的Leader都特别的nice,乐意把这些好的规范传授给每个人.
为什么选择Apache Airflow作为调度系统的7大理由_第4张图片

2.功能完善

Airflow支持用户使用Python编写DAG(有向无环图)来构建任务之间的依赖关系,从而构建工作流.Airflow提供完整的DAG支持,且能够编写代码动态的生产DAG或者Task,支持TaskGroup/SubDag的方式嵌套DAG任务,支持使用ExternalTaskSensor的方式来构建跨DAG的依赖关系,SmartSensor的引进让资源消耗变得更少.

提供WebUI来监控任务的运行状态,用户可以在WebUI上或者是使用CLI命令亦或是使用REST API来开启(on),关闭(off),触发(trigger),重跑(clear)DAG任务,查看任务运行的日志.

其不仅支持常规的(Bash,Python,JDBC,SFTP)Operator,还支持大数据领域(HDFS,Hive,Spark,Zeppelin,Kylin,Sqoop,Livy,Trino)的各种Operator,且支持机器学习(Papermill,great_expectation等)相关的Operator,还支持云原生(Kubernetes,Docker,AWS,GCP,Databricks,Snowflake)的各种Operator,与各种的告警通讯Operator(Email/Slack/Dingding/Wechat)无缝衔接.

Airflow可以使用多种方式进行部署,常规的物理机,Docker容器,K8S集群部署都OK.社区提供Poduct Ready的Helm Chart,用户能够使用标准化的Airflow软件进行安装,也可以根据社区的文档定制镜像然后部署.

3.性能优异

自Airflow2.0发布之后,各个组件均可以水平扩展,task之间的流转在秒级别,scheduler可以无限的水平扩展,结合K8S使用可以实现动态的缩扩容,极大的提升资源的利用率,降低成本。

4.生态支持丰富

第三方插件丰富,不仅限于Provider Package支持60多种Operator,其开放的架构使得其余第三方进行结合变得特别容易.
如其基于statsd开放了指标健康,我们可以基于statsd,再结合其他软件(如graphite或者prometheus)对Airflow进行性能监控,使得其符合企业内部的监控运维规范.

我们不仅可以将Airflow的log存储在本地,还可以存储在ES或者是S3等云存储系统中.

DAG的依赖关系不仅可以使用自带的dag dependencies功能(2.1.0版本)在WebUI上查看,还能够通过Apache Atlas的方式拉取,或者使用Datahub来进行拉取,使得我们更好的对Dag进行影响分析,方便进行数据治理.

社区提供了多种方式使得不会python的人也能够使用airflow方便的构建数据流水线,如通过gusty使用yaml的方式构建dag,通过cwl-airflow使用领域特定语言CWL来构建dag,甚至可以通过airflow-dag-creation-manager-plugin在WEB UI上拖拽配置来构建dag.

5.云厂商支持

我们不仅可以自己搭建Apache Airflow服务,还可以使用云厂商(国外主流的云厂商AWS/Azure/Google,国内的Aliyun)提供的Apache Airflow服务,具体的可以参考谁在使用Apache Airflow及提供Apache Airflow服务的云厂商 这篇文章.
开箱即用的云服务给我们使用Apache Airflow提供了极大的便利,节省了运维成本,可以更加的专注于在业务方面创造价值.

6.使用Python所带来的天然优势

由于数据分析,机器学习方面都基本上都是Pythoner,故这部分人都乐意使用Python编程的方式来构建数据流水线,且会不断地把各自领域优秀的软件与Apache Airflow相结合,进一步的扩大了Apache Airflow的生态,不断地让Apache Airflow变得更好.
Apache Airflow在与机器学习领域的结合有着天然的优势。

7.总结

本文基于客观事实总结了选择Apache Airflow作为调度系统的7大理由,举例丰富,以供需要的进行调度系统选型的朋友们进行参考,也可以供竞品进行参考,以促进其他调度系统往更好的方向发展。

更多关于Apache Airflow的文章,请查看 Apache Airflow系列文章。
遇到Apache Airflow相关的问题的话,欢迎加入Apache Airflow 技术交流群进行讨论。
为什么选择Apache Airflow作为调度系统的7大理由_第5张图片
或者加入QQ群 704721809。

参考资料:

[0]https://github.com/apache/airflow
[1]https://airflow.apache.org/docs/
[2]https://airflow.apache.org/ecosystem/
[3]https://github.com/jghoman/awesome-apache-airflow

你可能感兴趣的:(大数据,大数据组件,Apache,Airflow,Apache,Airflow,大数据,调度系统)