我有一个在独立模式下使用Spark 2.1的Scala应用程序。该应用程序将运行2个小时并完成。它应该每月运行一次。
我找到了几种组合Spark和Kubernetes的方法:
大多数文档描述了如何在Kubernetes上运行Spark集群。在Kubernetes上运行Spark Standalone的方法是什么?
答案 0 :(得分:1)
对于Kubernetes上的独立火花,存在的两个规范样本是:
这些目前正在运行过时的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