Apache Airflow 调查 2020
数据处理工具的世界正稳步增长。Apache Airflow 已经被视为这个复杂生态系统的关键组件。我们观察到用户数量以及活跃贡献者数量都在稳步增长。因此倾听并了解我们的社区极为重要。
值得注意的是,2020 年的调查仍然主要针对 Apache Airflow 的 1.10.X 版本,而许多缺点可能已在 2020 年12月发布的 2.0 版本中得到解决。但如果情况属实,我们将在明年得知!
用户概览

以下哪项最能描述您当前的职业?(单选)
| 否。 | % | |
|---|---|---|
| 数据工程师 | 115 | 56.65 |
| 开发者 | 28 | 13.79 |
| DevOps | 17 | 8.37 |
| 解决方案架构师 | 14 | 6.9 |
| 数据科学家 | 12 | 5.91 |
| 其他 | 10 | 4.93 |
| 数据分析师 | 4 | 1.97 |
| 支持工程师 | 3 | 1.48 |
这些结果并不令人惊讶,因为 Airflow 是专注于数据相关任务的工具。我们的用户大多数是数据工程师、科学家或分析师。2020 年的结果与2019 年的结果相似,且在机器学习使用案例上略有提升。
另外,79% 的用户每天使用 Airflow,16% 的用户至少每周使用一次。
贵公司有多少员工?(单选)
| 否。 | % | |
|---|---|---|
| 200+ | 107 | 52.71 |
| 51-200 | 44 | 21.67 |
| 11-50 | 37 | 18.23 |
| 1-10 | 15 | 7.39 |
贵公司有多少员工使用 Airflow?(单选)
| 否。 | % | |
|---|---|---|
| 1-5 | 84 | 41.38 |
| 6-20 | 75 | 36.95 |
| 21-50 | 23 | 11.33 |
| 50+ | 21 | 10.34 |
Airflow 是被大型公司使用并信赖的软件。我们也可以看到 Airflow 能够适用于不同规模的团队。然而,在某些情况下,用户可能会使用多个 Airflow 实例。
您是否考虑迁移到其他工作流引擎?(单选)
| 否。 | % | |
|---|---|---|
| 不,我们对 Airflow 很满意 | 174 | 85.71 |
| 是 | 29 | 14.29 |
接近每 7 位用户中就有 1 位在考虑迁移到其他工作流引擎。他们的决定通常因为需要 更简便的工作流编写体验(12.32%)、更好的 UI/UX 和 更快的调度器(两者均为 8.37%)而产生。
虽然第一个问题可以通过 Airflow 2.0 中的 TaskFlow API 来解决,但另外两个问题在新版本中肯定已经得到处理。来自 2.0 用户的早期反馈也在证实这一点。
用户考虑的替代引擎主要是 Prefect 和 Argo。一些参与者还提到了 Luigi、Kubeflow 或自定义方案。
您或您的团队是否积极参与 Airflow 开发——贡献代码?(单选)
| 否。 | % | |
|---|---|---|
| 我希望我们能做到 | 99 | 48.77 |
| 否 | 59 | 29.06 |
| 是 | 45 | 22.17 |
这真是令人暖心的结果。这意味着每 5 位用户中就有 1 位积极为我们的项目做出贡献!但我们想了解除了时间之外,还是否有其他因素阻止有意贡献的人付诸行动。如果存在其他障碍,我们非常希望得知,以便改进。话虽如此——如果您知道我们可以改进的地方,请通过 Slack、开发者邮件列表或 Github 讨论与我们联系。
您有多大可能推荐 Apache Airflow?(单选)
| 否。 | 2020 % | 2019 % | |
|---|---|---|---|
| 非常可能 | 125 | 61.58 | 45.45% |
| 可能 | 62 | 30.54 | 40.26% |
| 中立 | 11 | 5.42 | 10.71% |
| 不太可能 | 3 | 1.48 | 2.60% |
| 非常不可能 | 2 | 0.99 | 0.97% |
这是好消息!看起来人们比去年更愿意推荐 Apache Airflow。
您获取 Airflow 信息的来源是什么?(多选)
| 否。 | % | |
|---|---|---|
| 文档 | 154 | 75.86 |
| Airflow 网站 | 139 | 68.47 |
| Slack | 128 | 63.05 |
| Github | 127 | 62.56 |
| Stack Overflow | 72 | 35.47 |
| Airflow Summit 视频 | 44 | 21.67 |
| 开发者邮件列表 | 33 | 16.26 |
| Awesome Apache Airflow 仓库 | 21 | 10.34 |
| 其他 | 15 | 7.39 |
可以看到,Airflow 文档是关键的信息来源。有趣的是,超过 60% 的用户通过 Github 和 Slack 频道获取信息。

Airflow 使用案例
您对 Airflow 有任何定制吗?(单选)
| 否。 | % | |
|---|---|---|
| 不,我们使用原生 Airflow | 154 | 75.86 |
| 是的,我们有小的补丁(未 fork) | 34 | 16.75 |
| 是的,我们有独立的 fork | 15 | 7.39 |
在将新成员加入 Airflow 时,最大的问题是什么?(多选)
| 否。 | % | |
|---|---|---|
| 没有关于 DAG 开发的最佳实践指南 | 102 | 50.25 |
| 没有简便的启动 Airflow 方式 | 64 | 31.53 |
| 关于使用 Airflow 各方面的教程数量少 | 57 | 28.08 |
| 文档不够清晰 | 53 | 26.11 |
| 没有简便的方式将 DAG 部署到 Airflow 实例 | 52 | 25.62 |
| 没有问题 | 34 | 16.75 |
| 关于 Airflow 的博客数量少 | 30 | 14.78 |
在您当前的角色中,您使用 Airflow 的哪些界面?(多选)
| 否。 | % | |
|---|---|---|
| 原生 Airflow 图形用户界面 | 199 | 98.03 |
| CLI | 88 | 43.35 |
| API | 48 | 23.65 |
| 自定义(自行开发的)Airflow 图形用户界面 | 12 | 5.91 |
| 其他 | 3 | 1.48 |
您是否组合多个 DAG?(多选)
| 否。 | % | |
|---|---|---|
| 是,通过触发另一个 DAG | 87 | 42.86 |
| 否,我不组合多个 DAG | 79 | 38.92 |
| 是,通过 SubDAG | 40 | 19.7 |
| 其他 | 18 | 8.87 |
您如何与外部服务集成?(多选)
| 否。 | % | |
|---|---|---|
| 使用已有的专用 operators / hooks | 147 | 72.41 |
| 使用 Bash / Python operator | 140 | 68.97 |
| 使用自定义 operators / hooks | 138 | 67.98 |
| 其他 | 12 | 5.91 |
您在 Airflow DAG 中使用了哪些外部服务?(多选)
| 否。 | % | |
|---|---|---|
| Amazon Web Services(AWS) | 121 | 59.61 |
| 公司内部系统 | 113 | 55.67 |
| Google Cloud Platform(GCP)/ Google API | 97 | 47.78 |
| Hadoop / Spark / Flink / 其他 Apache 软件 | 72 | 35.47 |
| 微软 Azure | 21 | 10.34 |
| 其他 | 19 | 9.36 |
| 在我的 Airflow DAG 中未使用外部服务 | 5 | 2.46 |

您使用 Airflow 插件吗?如果使用,您将它们用于什么?(多选)
| 否。 | % | |
|---|---|---|
| 添加新的 operators / sensors 和 hooks | 119 | 58.62 |
| 我不使用 Airflow 插件 | 69 | 33.99 |
| 添加 AppBuilder 视图和菜单项 | 27 | 13.3 |
| 添加新的 executor | 17 | 8.37 |
| 添加 OperatorExtraLinks | 13 | 6.4 |
| 其他
您使用 Airflow 的数据血缘功能吗?(单选)
| 否。 | % | |
|---|---|---|
| 不,如果 Airflow 完全支持,我会使用此功能 | 105 | 51.72 |
| 不,数据血缘对我的使用场景并不重要。 | 68 | 33.5 |
| 是,我使用其他数据血缘产品 | 24 | 11.82 |
| 是,我使用自定义实现 | 5 | 2.46 |
| 是,我使用 Airflow 的实验性数据血缘功能 | 1 | 0.49 |
当被问及使用何种血缘产品时,答案从自定义工具到已知产品如 Amundsen、Atlas 或 dbt 不等。
部署
在您最大的 Airflow 实例中,有多少活跃的 DAG?(开放式问题)
| Dag 数量 | 否。 | % |
|---|---|---|
| < 20 | 64 | 32 |
| 21-40 | 33 | 16 |
| 41-60 | 13 | 6 |
| 61-100 | 32 | 16 |
| 101-200 | 31 | 15 |
| 201-300 | 8 | 4 |
| 301-999 | 12 | 6 |
| 1000+ | 10 | 5 |
您在单个 DAG 中使用的最大任务数是多少?(开放式问题)
| Dag 数量 | 否。 | % |
|---|---|---|
| < 10 | 42 | 21 |
| 11-20 | 31 | 15 |
| 21-30 | 15 | 7 |
| 31-40 | 11 | 5 |
| 41-50 | 22 | 11 |
| 51-100 | 39 | 19 |
| 101-200 | 16 | 8 |
| 201-500 | 16 | 8 |
| 501+ | 11 | 5 |
您当前使用的 Airflow 版本是?(单选)
| 否。 | % | |
|---|---|---|
| 1.10.14 | 55 | 27.09 |
| 2.0.0+ | 45 | 22.17 |
| 1.10.12 | 27 | 13.3 |
| 1.10.10 | 26 | 12.81 |
| 1.10.11 | 14 | 6.9 |
| 1.10.5 或更早版本 | 10 | 4.93 |
| 1.10.9 | 8 | 3.94 |
| 1.10.13 | 7 | 3.45 |
| 1.10.6 | 4 | 1.97 |
| 1.10.7 | 4 | 1.97 |
| 1.10.8 | 3 | 1.48 |
这可能是调查中最重要的问题之一。虽然看到超过 60% 的用户使用最新的三个 Airflow 版本之一是好事,但令人担忧的是其余用户仍在使用旧版或已知存在安全漏洞的版本。
另外,已有超过 20% 的用户在使用 2.0.0 以上的版本,这是一条相当不错的信息。
您使用什么元数据库?(单选)
| 否。 | % | |
|---|---|---|
| Postgres 12 | 36 | 17.73 |
| Postgres 9.6 | 33 | 16.26 |
| Postgres 11 | 31 | 15.27 |
| MySQL 5.7 | 27 | 13.3 |
| MySQL 8.0 | 20 | 9.85 |
| Postgres 10 | 20 | 9.85 |
| 其他 | 19 | 9.36 |
| Postgres 13 | 18 | 8.87 |
这意味着约 69% 的用户选择使用 Postgres 作为元数据库。近 24% 的用户选择 MySQL。其他回答包括一些 MySQL 变体,如 MariaDB,或云托管数据库,如 Google Composer 使用的 Cloud SQL 或 AWS Aurora。
值得庆幸的是,用户在生产部署中基本避免使用 SQLite!
您使用哪种 executor 类型?(单选)

| 否。 | 2020 | 2019 | |
|---|---|---|---|
| Celery | 100 | 49.26% | 44.81% |
| Kubernetes | 48 | 23.65% | 16.88% |
| Local(本地) | 40 | 19.7% | 27.60% |
| Sequential(顺序) | 10 | 4.93% | 7.14% |
| 其他 | 5 | 2.46% | 3.57 |
与前一年相比,更多用户现在使用 Celery 和 Kubernetes executor,而 LocalExecutor 的使用率下降了近8个百分点。这可能表明用户的部署规模在增长,需要更具可扩展性的解决方案。
在 CeleryExecutor 用户中,78% 使用 Redis 作为消息中间件,19% 使用 RabbitMQ,其余用户使用其他中间件或不确定其部署使用的是什么。
您使用哪些指标来监控 Airflow?(多选)
| 否。 | % | |
|---|---|---|
| 我不使用监控 | 65 | 32.02 |
| 外部监控服务 | 60 | 29.56 |
| 元数据库中的信息 | 51 | 25.12 |
| Statsd | 49 | 24.14 |
| 其他 | 31 | 15.27 |
其他回答大多提到了用户使用的工具,包括 DataDog 和 Prometheus 导出器等。
您如何部署 Airflow?(单选)
| 否。 | % | |
|---|---|---|
| 在虚拟机上(例如使用 AWS EC2) | 64 | 31.53 |
| 使用托管服务,例如 Astronomer、Google Composer 或 AWS MWAA | 35 | 17.24 |
| 在 Kubernetes 上(使用自定义部署) | 29 | 14.29 |
| 本地部署 | 28 | 13.79 |
| 在 Kubernetes 上(使用其他 Helm Chart) | 20 | 9.85 |
| 在 Kubernetes 上(使用 Apache Airflow 的 Helm Chart) | 17 | 8.37 |
| 其他 | 12 | 5.91 |
近 33% 的用户通过某种 Kubernetes 部署方式部署 Airflow。这比 2019 年高出约 10%。使用托管服务的比例也略有上升(2019 年为 14.61%)。
您在部署时使用容器化吗?(单选)
| 否。 | % | |
|---|---|---|
| 是,使用 Helm Chart / Kubernetes | 58 | 28.57 |
| 否,我不使用容器化 | 57 | 28.08 |
| 是,单个 Docker 镜像 | 49 | 24.14 |
| 是,使用 Docker Compose | 39 | 19.21 |
在不使用基于 Kubernetes 的部署的用户中,58% 使用容器化。其中约 42% 的用户采用 docker-compose 进行部署。
您如何分发 DAG?(单选)
| 否。 | % | |
|---|---|---|
| 使用同步过程(Git sync、GCS fuse 等) | 79 | 38.92 |
| 将其打包进 Docker 镜像 | 56 | 27.59 |
| 共享文件系统 | 34 | 16.75 |
| 其他 | 20 | 9.85 |
| 我不清楚 | 14 | 6.9 |
最流行的 DAG 分发方式似乎是使用同步过程。约 40% 的用户在使用该方式的同时也采用 Kubernetes 部署。
Airflow 的未来
在您看来,Airflow 哪些方面可以改进?(多选)
| 否。 | % | |
|---|---|---|
| Web UI | 100 | 49.26 |
| 示例、操作指南、入门文档 | 90 | 44.33 |
| 日志、监控与告警 | 90 | 44.33 |
| 技术文档 | 90 | 44.33 |
| 调度器性能 | 83 | 40.89 |
| DAG 编写 | 64 | 31.53 |
| 身份认证与授权 | 58 | 28.57 |
| REST API | 51 | 25.12 |
| 其他 | 44 | 21.67 |
| 可靠性 | 41 | 20.2 |
| 外部集成,例如 AWS、GCP、Apache 产品 | 36 | 17.73 |
| 安全 | 28 | 13.79 |
| CLI | 20 | 9.85 |
| 对我来说一切运作良好 | 14 | 6.9 |
| 我不清楚 | 4 | 1.97 |
哪些功能最能引起您的兴趣?(多选)
| 否。 | % | |
|---|---|---|
| DAG 版本管理 | 109 | 53.69 |
| 内置统计 | 71 | 34.98 |
| 改进的数据血缘 | 65 | 32.02 |
| 在间隔开始时调度 | 63 | 31.03 |
| 无状态工作节点 | 59 | 29.06 |
| 更多调度配置选项(时间单位、增量) | 57 | 28.08 |
| 多租户部署 | 49 | 24.14 |
| DAG fetcher(AIP-5) | 39 | 19.21 |
| 通用传输 operator | 34 | 16.75 |
| 其他 | 33 | 16.26 |
| 我已有所需的一切 | 11 | 5.42 |
| 无 | 11 | 5.42 |
您会考虑迁移到 Airflow 2.0 吗?(单选)
| 否。 | % | |
|---|---|---|
| 是,尽快迁移 | 81 | 39.9 |
| 是,等它成熟后(例如在 2.1 之后) | 72 | 35.47 |
| 我已经在使用 Airflow 2.0+ | 39 | 19.21 |
| 我还不知道 | 8 | 3.94 |
| 不,我不计划迁移 | 3 | 1.48 |
Airflow 2.0 哪些特性最让您感到兴奋?(多选)
| 否。 | % | |
|---|---|---|
| 整体性能提升 | 133 | 65.52 |
| 全新 WebUI | 102 | 50.25 |
| 调度器高可用 | 99 | 48.77 |
| 官方 Docker 镜像 | 84 | 41.38 |
| @task 装饰器 | 56 | 27.59 |
| 官方 Helm Chart | 51 | 25.12 |
| Providers 包 | 41 | 20.2 |
| 可配置的 XCom 后端 | 33 | 16.26 |
| CeleryKubernetesExecutor | 31 | 15.27 |
| 其他 | 12 | 5.91 |
总结
从开源的角度来看,看到许多人愿意为 Apache Airflow 贡献力量是件好事。这意味着如果能够发挥这些资源,社区将会更加强大。从产品角度来看,了解用户通常使用我们软件的最新版本并愿意升级到新版本也很重要。
当然仍有一些需要改进的地方——文档、入门指南以及即插即用的 Airflow 部署。但我们希望随着采纳度的提升,愿意分享经验和工具的人会增加。
数据
如果您认为我遗漏了什么,或者想自行进行洞察,数据可在此获取:(Airflow User Survey 2020.csv)[/data/survey-responses/airflow-user-survey-responses-2020.csv.zip]
分享