Apache Airflow 分布式处理

Apache Airflow Distributed Processing

我对 Apache Airflow 的架构感到困惑。

如果我知道, 当您在 oozie 中执行 hql 或 sqoop 语句时,oozie 会将请求定向到数据节点。

我想在 Apache Airflow 中实现同样的目的。我想执行一个 shell 脚本、hql 或 sqoop 命令,并且我想确保我的命令正在由数据节点分布式执行。 Airflow 有不同的执行器类型。我应该怎么做才能同时在不同的数据节点中执行 运行 命令?

您似乎想在分布式工作器上执行您的任务。在这种情况下,请考虑使用 CeleryExecutor.

CeleryExecutor is one of the ways you can scale out the number of workers. For this to work, you need to setup a Celery backend (RabbitMQ, Redis, …) and change your airflow.cfg to point the executor parameter to CeleryExecutor and provide the related Celery settings.

参见:https://airflow.apache.org/configuration.html#scaling-out-with-celery

Oozie 与 Hadoop 节点紧密耦合,所有脚本都需要上传到 HDFS,而带有 Celery Executor 的 Airflow 具有更好的架构。使用 Celery 执行器相同的脚本,hql 可以通过使用正确的队列在多个节点以及特定节点中并发执行,并且一些工作人员可以监听特定队列以执行这些操作。