spark on k8s 部署的一点理解

Running Spark on Kubernetes - Spark 3.4.0 Documentation (apache.org)

前提条件

1. 本地有spark安装包,以便于执行 spark submit 命令

2. k8s 集群,以及本地的有 kubectl 并且配置的用户包含相关权限,具体可以参考官网

 一些观念的转变

spark on k8s 并不会启动一个常驻的集群,而是再 submit 提交任务时启动对应的pod作为driver 和 executor,任务结束后,这些pod 都会被释放

./bin/spark-submit \
    --master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port> \
    --deploy-mode cluster \
    --name spark-pi \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.executor.instances=5 \
    --conf spark.kubernetes.container.image=<spark-image> \
    local:///path/to/examples.jar

上面是官网上提供的启动示例,主要分为几步

1. 调用本地的 spark-submit 命令

2. spark-submit 进程请求 k8s API 创建dirver pod (使用本地的 ~/.kubi/config 获取权限)

3. driver pod 创建 executor pod 作为执行器来执行任务

4. 任务结束后pod会完成,释放资源,所以没有任务的时候不会占用资源

5. 实时任务则一直执行

关于spark配置

使用spark难免会需要一些 hdfs 、hive-metastore 等配置、xml 等,把这些配置打到镜像里显然可以,但很不灵活。

本地spark-submit 进程 创建pod时会将本地的spark配置作为configMap挂在到pod中

所以只要维护好本地提交的spark环境即可,

可以先通过 kubectl describe  pod ** 来找到对相应的configMap

然后 通过 kubectl describe  configmap 来确认配置

关于权限

本地提交是使用的用户权限,来自 ~/.kube/config

提交后driver后,driver 需要创建pod的权限,这里可以使用的是 serviceAccout 的权限,创建权限以及如何指定serviceAccount 参考 官网RBAC部分

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值