我是spark的新手。我想用spark让k8s在helm chart: stable/spark上运行。我可以看到它默认旋转了1个master和2个执行器,并在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
此外,我试图避免在火花码头图像中烘烤job
我不想将k8s用作Spark的Cluster Manager。我试图看看是否有办法将火花作为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
此外,我试图避免在火花码头图像中烘焙工作。
唯一的方法是使用client
模式。基本上,你的驱动程序将在你运行spark-submit
的任何机器中,并且需要拥有执行工作所需的所有位。唯一的缺点是,如果客户端与Kubernetes集群不在同一位置,您可能会受到网络延迟的影响。
使用cluster
模式,您可以将容器烘焙到容器映像中,因为您的驱动程序可以从群集中任何从属容器/容器启动。