我对 Apache Airflow 的架构感到困惑。
如果我知道,当您在 oozie 中执行 hql 或 sqoop 语句时,oozie 会将请求定向到数据节点。
我想在 Apache Airflow 中实现同样的目标。我想执行一个 shell 脚本、hql 或 sqoop 命令,并且我想确保我的命令正在由数据节点分布式执行。Airflow 有不同的执行器类型。我应该怎么做才能同时在不同的数据节点中运行命令?
我对 Apache Airflow 的架构感到困惑。
如果我知道,当您在 oozie 中执行 hql 或 sqoop 语句时,oozie 会将请求定向到数据节点。
我想在 Apache Airflow 中实现同样的目标。我想执行一个 shell 脚本、hql 或 sqoop 命令,并且我想确保我的命令正在由数据节点分布式执行。Airflow 有不同的执行器类型。我应该怎么做才能同时在不同的数据节点中运行命令?
您似乎想在分布式工作人员上执行任务。在这种情况下,请考虑使用CeleryExecutor
.
CeleryExecutor 是您可以扩展工作人员数量的方法之一。为此,您需要设置一个 Celery 后端(RabbitMQ、Redis、...)并更改您的 airflow.cfg 以将 executor 参数指向 CeleryExecutor 并提供相关的 Celery 设置。
请参阅:https ://airflow.apache.org/configuration.html#scaling-out-with-celery
Oozie 与 Hadoop 节点紧密耦合,所有脚本都需要上传到 HDFS,而带有 Celery Executor 的 Airflow 具有更好的架构。使用 Celery executor 相同的脚本,hql 可以通过使用正确的队列在多个节点以及特定节点中同时执行,并且一些工作人员可以侦听特定队列以执行这些操作。