就像我以前读过的一些文章。它说,在新的Kubernetes版本中,已经包含了Spark功能。但是可以采用一些不同的方式,例如使用KubernetesPodOperator而不是使用BashOperator / PythonOperator来执行SparkSubmit。
结合气流和Kubernetes的最佳实践是删除Spark并使用KubernetesPodOperator执行任务吗?
由于Kubernetes具有Spark所没有的AutoScaling,因此性能更好。
需要Kubernetes的专家来帮助我解释一下。我仍然是Kubernetes,Spark和Airflow之类的新手。 :slight_smile:
谢谢。
答案 0 :(得分:2)
在新的Kubernetes版本中,已经包含Spark功能
我认为你倒退了。新版本的Spark可以在Kubernetes集群中运行任务。
使用KubernetesPodOperator而不是使用BashOperator / PythonOperator进行SparkSubmit
使用Kubernetes可以让您运行带有所需隔离依赖的容器。
含义
spark-submit
必须在所有Airflow节点上都可用。 删除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)。