气流+芹菜或dask。为了啥,啥时候?
Posted
技术标签:
【中文标题】气流+芹菜或dask。为了啥,啥时候?【英文标题】:Airflow + celery or dask. For what, when?气流+芹菜或dask。为了什么,什么时候? 【发布时间】:2018-08-24 21:28:21 【问题描述】:我阅读了 Airflow 官方文档the following:
这到底是什么意思?作者所说的横向扩展是什么意思?也就是说,什么时候使用 Airflow 还不够 ,或者什么时候有人将 Airflow 与 Celery 之类的东西结合使用? (dask
也一样)
【问题讨论】:
【参考方案1】:根据@mdurant 的回答,这是我用 3 个使用 Dask 的 Airflow DAG 示例编写的教程。希望这能让您了解何时以及如何将 Dask 与 Airflow 一起使用。
https://coiled.io/blog/3-airflow-dag-examples-with-dask/
【讨论】:
【参考方案2】:您可能会喜欢阅读 dask 与 celery/airflow 任务管理器的比较http://matthewrocklin.com/blog/work/2016/09/13/dask-and-celery
由于您没有提出具体问题,因此像这样的一般性阅读应该会提供丰富的信息,也许您可以澄清您的目标。
-编辑-
最近有些人可能希望研究prefect,这是一种重写的气流(带有付费企业功能的开源核心)。
【讨论】:
【参考方案3】:在 Airflow 术语中,“执行器”是负责运行任务的组件。 LocalExecutor
通过在 Airflow 运行所在的计算机上生成线程并让线程执行任务来做到这一点。
您的容量自然会受到本地计算机上可用资源的限制。 CeleryExecutor
将负载分配给多台机器。执行器本身将执行任务的请求发布到队列中,几个工作节点中的一个接收该请求并执行它。您现在可以扩展工作节点集群以增加整体容量。
最后,还没有准备好,有一个 KubernetesExecutor
正在制作中 (link)。这将在 Kubernetes 集群上运行任务。这不仅可以让您的任务完全隔离,因为它们在容器中运行,您还可以利用 Kubernetes 中的现有功能来自动扩展集群,以便您始终拥有最佳的可用资源量。
【讨论】:
对于LocalExecutor
,任务作为子进程执行:...如果恰好是LocalExecutor,任务将作为子进程执行;在 CeleryExecutor 和 MesosExecutor 的情况下,任务是远程执行的……
SO 的一个未被充分传达的特性是它是一个 wiki(至少在某种意义上)。您完全正确,请随时编辑原始答案。以上是关于气流+芹菜或dask。为了啥,啥时候?的主要内容,如果未能解决你的问题,请参考以下文章