如何在Kubernetes上独立运行火花



我有一个在独立模式下使用Spark 2.1的Scala应用程序。该应用程序将运行2个小时并完成。它应该每月运行一次。

我找到了几种结合火花和kubernetes的方法:

  1. 使用Apache Spark Helm图表:https://github.com/kubernetes/charts/tree/master/master/stable/spark
  2. kubernetes有一个特殊的Spark:https://github.com/apache-spark-on-k8s/spark
  3. 构建我自己的应用程序的docker映像,包括火花二进制:http://blog.madhukaraphatak.com/scaling-park-park-with-kubernetes-part-5/代码示例:https://github.com/phatak-dev/kubernetes spark

大多数文档描述了如何在Kubernetes上运行火花群集。在kubernetes上独立运行火花的方法是什么?

对于kubernetes上的独立火花,存在的两个规范样本是:

  1. https://github.com/kubernetes/charts/tree/master/stable/spark
  2. https://github.com/kubernetes/examples/tree/master/master/staging/spark

这些当前是SPARK的过时版本,需要更新为2.1和2.2。(欢迎PRS :)(。

https://github.com/apache-spark-on-k8s/spark分支不是独立模式,而是旨在使Spark能够直接在Kubernetes簇上启动。它最终将合并到上游火花中。文档(如果您想利用它(就在这里。

截至目前,如果您想使用Spark 2.1,则选项是:编译您自己的图像,或用Apache-Spark-on-k8s中的Spark Distibter包装应用程序

我首先尝试了最简单的想法:方法3:

构建我自己的应用程序的docker映像,包括火花二进制:http://blog.madhukaraphatak.com/scaling-park-with-kubernetes-part-part-5/

代码示例:https://github.com/phatak-dev/kubernetes-spark

它运行良好。

检查我的https://github.com/radanalyticsio/spark-operator

它在kubernetes和openshift上部署了独立的火花,并支持Spark-on-k8s本机调度程序。默认火花版本为2.4.0

您可以在项目的README文件中找到非常快速的启动,但是这是一种使用操作员部署Spark群集的方法:

# create operator
kubectl apply -f https://raw.githubusercontent.com/radanalyticsio/spark-operator/master/manifest/operator.yaml
# create cluster
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: SparkCluster
metadata:
  name: my-cluster
spec:
  worker:
    instances: "2"
EOF

最新更新