如何在Kubernetes上运行Spark standalone?

时间:2017-06-26 16:54:45

标签: scala apache-spark kubernetes

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

我找到了几种组合Spark和Kubernetes的方法:

  1. 使用Apache Spark Helm Chart:https://github.com/kubernetes/charts/tree/master/stable/spark
  2. Spark for Kubernetes有一个特殊的分支:https://github.com/apache-spark-on-k8s/spark
  3. 构建我自己的应用程序的Docker镜像,包括Spark二进制文件:http://blog.madhukaraphatak.com/scaling-spark-with-kubernetes-part-5/代码示例:https://github.com/phatak-dev/kubernetes-spark
  4. 大多数文档描述了如何在Kubernetes上运行Spark集群。在Kubernetes上运行Spark Standalone的方法是什么?

3 个答案:

答案 0 :(得分:1)

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

  1. https://github.com/kubernetes/charts/tree/master/stable/spark
  2. https://github.com/kubernetes/examples/tree/master/staging/spark
  3. 这些目前正在运行过时的Spark版本,需要更新到2.1,很快就会更新2.2。 (PR欢迎:))。

    https://github.com/apache-spark-on-k8s/spark分支不适用于独立模式,但旨在使Spark能够直接在Kubernetes集群上启动。它最终将合并为上游火花。如果您希望使用它,则文档为here

    截至目前,如果您想使用Spark 2.1,选项包括:编译您自己的图像,或者使用apache-spark-on-k8s中的spark分布打包您的应用程序

答案 1 :(得分:0)

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

构建我自己的应用程序的Docker镜像,包括Spark二进制文件:http://blog.madhukaraphatak.com/scaling-spark-with-kubernetes-part-5/

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

效果很好。

答案 2 :(得分:-1)

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

它在Kubernetes和OpenShift上部署了独立的spark,并且还支持spark-on-k8的本机调度程序。默认的Spark版本是2.4.0

您可以在项目的自述文件中找到非常快速的入门,但是这是一种使用运算符部署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