Spark on K8S 在submit的时候默认是直接在 K8S Master 节点提交,通过--master或者 SparkConf 中的spark.master来指定。 The Spark master, specified either via passing the --master command line argument to spark-submit or by setting spark.master in the application’s configuration, must be a URL with...
Kubernetes Native:通过 spark-submit 直接向 K8S 的 API Server 提交,申请到资源后启动 Pod 做为 Driver 和 Executor 执行 Job,参考http://spark.apache.org/docs/2.4.6/running-on-kubernetes.html Spark Operator:安装 Spark Operator,然后定义 spark-app.yaml,再执行 kubectl apply -f spark-app.yaml,这种申...
调试Spark on k8s 1. 调试spark-submit 启动命令 /root/spark/jdk1.8.0_171/bin/java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp /root/spark/spark-2.3.0-bin-hadoop2.7/conf/:/root/spark/spark.deploy.SparkSubmit --master k8s://172.22.12.11:6443 --deploy-mode...
spark.local.dir/SPARK_LOCAL_DIRS 用于Spark 在 Shuffle阶段临时文件及RDD持久化存储等,可以使用逗号分隔配置多个路径对应到不同的磁盘,Spark on Yarn时这个路径默认会被Yarn集群的配置LOCAL_DIRS所取代。在Spark on k8s下,这个路径默认是emptyDir这个Volume所对应...
spark on k8s架构 上图所示是 Spark 官方文档中的 Spark on k8s 的架构图,图很简单,左边的 Client 和右边的 k8s 集群,其中 client 通过 spark-submit 接口和 k8s 集群进行交互,主要完成的是Spark Driver Pod的构建,当然由于本文主要讲的是 Client 进程调试相关的东西,后面的细节就先搁置了。
k8s on spark 一、安装部署 1、spark介绍 spark-submit可以直接用于将Spark应用程序提交到Kubernetes集群。提交机制的工作方式如下: Spark创建在Kubernetes容器中运行的Spark驱动程序。 驱动程序将创建执行程序,这些执行程序也将在Kubernetes Pod中运行并连接到它们,并执行应用程序代码。
我们这里使用的是 Uber 开源的 remote shuffle service ,同时修改了 Spark 的 executor shuffle 数据记录机制,实现了在使用 remote shuffle service 的情况下,不标记 executor 是否有活跃的 shuffle 数据,实现了在 K8s 环境下 executor 在任务运行完成后迅速释放掉。而不会因为shuffle 数据由 full gc 回收不及时而导...
spark on k8s(kubernetes) 中的DynamicResourceAllocation 参考之前的文章,我们知道在entrypoint中我们在启动executor的时候,我们传递了hostname参数 executor) shift 1 CMD=( ${JAVA_HOME}/bin/java "${SPARK_EXECUTOR_JAVA_OPTS[@]}" -Xms$SPARK_EXECUTOR_MEMORY -Xmx$SPARK_EXECUTOR_MEMORY -cp "$SPARK_CLASSPAT...
我们可以通过 Spark Operator[6] 的的方式, 如 kubectl apply -f <YAML file path>来创建和管理 Spark on k8s 应用。这种方式对于 Kubernetes 集群本身及用户而言无疑是最优雅的,而对没有 Kubernetes 经验的这部分 Spark 用户而言,有一定的学习成本。这种方式另一个好处是,Spark 的相关 lib 都可以通过 ...