气流+ Kubernetes VS气流+ Spark

时间:2018-10-11 03:38:58

标签: apache-spark kubernetes airflow

就像我以前读过的一些文章。它说,在新的Kubernetes版本中,已经包含了Spark功能。但是可以采用一些不同的方式,例如使用KubernetesPodOperator而不是使用BashOperator / PythonOperator来执行SparkSubmit。

结合气流和Kubernetes的最佳实践是删除Spark并使用KubernetesPodOperator执行任务吗?

由于Kubernetes具有Spark所没有的AutoScaling,因此性能更好。

需要Kubernetes的专家来帮助我解释一下。我仍然是Kubernetes,Spark和Airflow之类的新手。 :slight_smile:

谢谢。

2 个答案:

答案 0 :(得分:2)

  

在新的Kubernetes版本中,已经包含Spark功能

我认为你倒退了。新版本的Spark可以在Kubernetes集群中运行任务。

  

使用KubernetesPodOperator而不是使用BashOperator / PythonOperator进行SparkSubmit

使用Kubernetes可以让您运行带有所需隔离依赖的容器。

含义

  1. 使用BashOperator,您必须将文件分发到某个共享文件系统或运行Airflow任务的所有节点。例如,spark-submit必须在所有Airflow节点上都可用。
  2. 与Python相似,您会提供一些zip或egg文件,其中包含您的pip / conda依赖环境
  

删除Spark并使用KubernetesPodOperator执行任务

仍然有充分的理由使用Airflow运行Spark,但是相反,您将打包一个Spark驱动程序容器,以针对Kubernetes集群在容器内执行spark-submit。这样,您只需要安装docker,而无需Spark(以及所有依赖项)

  

Kubernetes具有Spark所没有的AutoScaling

Spark确实有Dynamic Resource Allocation...

答案 1 :(得分:0)

另一种可能对您有帮助的解决方案是在Airflow HttpOperator上在Kubernetes上使用Apache Livy(PR:https://github.com/apache/incubator-livy/pull/167)。