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 |
将近七分之一的用户正在考虑迁移到其他工作流引擎。他们的决定通常是因为需要更轻松的工作流编写体验 (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 Discussions 与我们联系。
您向他人推荐 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 |
有,我们有小的补丁(未分叉) | 34 | 16.75 |
有,我们有单独的分叉 | 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 |
您如何与外部服务集成?(多选)
编号 | % | |
---|---|---|
使用现有的专用操作符 / 钩子 | 147 | 72.41 |
使用 Bash / Python 操作符 | 140 | 68.97 |
使用自己的自定义操作符 / 钩子 | 138 | 67.98 |
其他 | 12 | 5.91 |
在您的 Airflow DAG 中,您使用哪些外部服务?(多选)
编号 | % | |
---|---|---|
Amazon Web Services | 121 | 59.61 |
公司内部系统 | 113 | 55.67 |
Google Cloud Platform / Google API | 97 | 47.78 |
Hadoop / Spark / Flink / 其他 Apache 软件 | 72 | 35.47 |
Microsoft Azure | 21 | 10.34 |
其他 | 19 | 9.36 |
我的 Airflow DAG 不使用外部服务 | 5 | 2.46 |
您是否使用 Airflow 插件?如果使用,用于什么?(多选)
编号 | % | |
---|---|---|
添加新的操作符/传感器和钩子 | 119 | 58.62 |
我不使用 Airflow 插件 | 69 | 33.99 |
添加 AppBuilder 视图和菜单项 | 27 | 13.3 |
添加新的执行器 | 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 作为其元数据库。MySQL 是近 24% 用户的选择。其他回复包括一些 MySQL 版本,如 MariaDB,或云托管数据库,如 Cloud SQL(Google Composer 使用)或 AWS Aurora。
很高兴知道用户在生产部署中避免使用 SQLite!
您使用什么类型的执行器?(单选)
编号 | 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 执行器,而 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 exporter。
您如何部署 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 个百分点。通过托管服务使用 Airflow 的比例略有增加(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 同步、GCS fuse 等) | 79 | 38.92 |
将其打包到 Docker 镜像中 | 56 | 27.59 |
共享文件系统 | 34 | 16.75 |
其他 | 20 | 9.85 |
我不知道 | 14 | 6.9 |
分发 DAG 的最流行方式似乎是使用同步过程。大约 40% 的用户将此过程与 Kubernetes 部署结合使用。
Airflow 的未来
您认为 Airflow 有哪些可以改进的地方?(多选)
编号 | % | |
---|---|---|
Web 用户界面 | 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 |
通用传输操作符 | 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 |
焕然一新的 Web 用户界面 | 102 | 50.25 |
调度器 HA | 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]
分享