如何使用头盔图在k8s上产生火花

时间:2019-04-17 23:42:26

标签: apache-spark kubernetes kubernetes-helm

我是spark的新手。我正在尝试使用sparkk8s上运行helm chart: stable/spark。我可以看到,默认情况下它会启动1个 master 和2个 executer ,并在ClusterIP上公开端口: 8080

现在我要做的是通过8080公开端口:elb,这样我就可以看到UI

问题是我是否总是必须在旋转主控板的图像中烘烤jarpySpark代码,或者我还有其他选择吗?

我不想将k8s用作spark的群集管理器。我试图查看是否有一种方法可以将spark托管为k8s上的应用程序,并向其提交作业,因为它是一个具有工作节点的独立群集。

所以不要使用:

spark-submit \
...
--master k8s://https://KUBECLUSTER-DNS-ADDRESS

我想做:

spark-submit \
...
--master spark://SPARK-MASTER-ELB-DNS

此外,我试图避免在 spark docker image

中烘烤job

1 个答案:

答案 0 :(得分:1)

  

我不想将k8用作Spark的集群管理器。我正在尝试查看是否有一种方法可以将spark作为k8s上的应用程序进行托管,并向其提交作业,因为它是具有工作节点的独立集群。

您可以使用clientcluster mode

客户端:

# Run on a Spark standalone cluster in client deploy mode
./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master spark://IP-ADDRESS-OF-MASTER:7077 \
  --executor-memory 20G \
  --total-executor-cores 100 \
  /path/to/examples.jar \
  1000

集群:

./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master spark://IP-ADDRESS-OF-MASTER:7077 \
  --deploy-mode cluster \
  --supervise \
  --executor-memory 20G \
  --total-executor-cores 100 \
  /path/to/examples.jar \
  1000
  

此外,我试图避免在Spark docker映像中烘烤作业。

唯一的方法是使用client模式。基本上,驱动程序将位于运行spark-submit的任何计算机上,并且需要具备执行作业所需的所有位。唯一的缺点是,如果客户端与Kubernetes群集不在同一位置,则您可能会受到网络延迟的影响。

cluster模式下,由于您的驱动程序可以在群集中作为从属的任何容器/容器上启动,因此您可以将内容烘烤到容器映像中。