我是spark的新手。我正在尝试使用spark在k8s上运行helm chart: stable/spark。我可以看到,默认情况下它会启动1个 master 和2个 executer ,并在ClusterIP
上公开端口: 8080 。
现在我要做的是通过8080
公开端口:elb
,这样我就可以看到UI
。
问题是我是否总是必须在旋转主控板的图像中烘烤jar
或pySpark
代码,或者我还有其他选择吗?
我不想将k8s
用作spark
的群集管理器。我试图查看是否有一种方法可以将spark
托管为k8s
上的应用程序,并向其提交作业,因为它是一个具有工作节点的独立群集。
所以不要使用:
spark-submit \
...
--master k8s://https://KUBECLUSTER-DNS-ADDRESS
我想做:
spark-submit \
...
--master spark://SPARK-MASTER-ELB-DNS
此外,我试图避免在 spark docker image
中烘烤job
答案 0 :(得分:1)
我不想将k8用作Spark的集群管理器。我正在尝试查看是否有一种方法可以将spark作为k8s上的应用程序进行托管,并向其提交作业,因为它是具有工作节点的独立集群。
您可以使用client
或cluster
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
模式下,由于您的驱动程序可以在群集中作为从属的任何容器/容器上启动,因此您可以将内容烘烤到容器映像中。