spark on k8s的动态资源分配和external shuffle Service以及任务的队列资源管理

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: spark on k8s的动态资源分配和external shuffle Service以及任务的队列资源管理

我们知道目前在spark on k8s的官网中,这里有两项很明显的future work。


动态资源分配和外部的shuffle serivce

任务队列以及资源管理

也就是说,目前这两项spark还是不支持的,借助于广大社区的力量,各个大厂都提出了自己的开源方案


外部的shuffle service通过RSS(remote shuffle service)来解决

关于RSS可以参考spark remote shuffle service(RSS)杂谈, 简短的解释一下:在yarn中 动态资源分配是需要通过外部的shuffle service来实现的(目前也可以不基于外部的shuffle service。具体参考SPAKR-27963),而在hadoop的时代,是可以通过在yarn上开启shuffle service的,也就是说在每个节点上开启shuffle service,spark的shuffle RDD的中间结果就会保存在yarn的nodeManager上,这样每个executor空闲了以后就不需要等待job运行完了才释放executor,这样就会释放yarn的资源,因为shuffle RDD的中间结果是保存在了nodeManager上,下一个spark task需要的时候就可以从nodeManager上拉取,但是这对于kubernetes是不适合的,因为spark的executor是运行在pod上的,pod的如果摧毁了,中间结果也就不存在了。所以就引入了RSS,把中间结果存储专门的集中的shuffle service上来解决这个问题,(当然如果不开启动态资源分配,shuffle的中间结果,也会存在pod上,但是存储的路径是/var/lib,这是个系统盘,最好是进行磁盘的挂载)


对于任务队列以及资源管理

我们知道spark on yarn的时候我们的任务是跑在yarn上的,那队列的分配肯定是由yarn这个资源管理框架来做啊,所以kuberentes社区也提出了YuniKorn调度器,这个调度器的功能其实就是为了满足批任务和服务部署的需求,具体的可以参考spark on k8s:apache YuniKorn(Incubating)的助力,

其实这个任务调度器的提供了不仅仅任务队列和资源管理的作用,当然该调度器还是处于孵化阶段,好多功能有待提高和完善。


相关文章
|
25天前
|
Kubernetes 容器
K8S的Service的LoadBanlance之Metallb解决方案
本文介绍了如何在Kubernetes中使用MetalLB来实现Service的LoadBalancer功能,包括MetalLB的部署、配置、以及通过创建地址池和部署服务来测试MetalLB的过程。
30 1
K8S的Service的LoadBanlance之Metallb解决方案
|
1月前
|
存储 Kubernetes 数据中心
在K8S中,同⼀个Pod内不同容器哪些资源是共用的,哪些资源是隔离的?
在K8S中,同⼀个Pod内不同容器哪些资源是共用的,哪些资源是隔离的?
|
1月前
|
Kubernetes 网络安全 容器
在K8S中,有个服务使用service的nodeport进行暴露,发现访问不到如何排查?
在K8S中,有个服务使用service的nodeport进行暴露,发现访问不到如何排查?
|
1月前
|
资源调度 Kubernetes 调度
Flink 细粒度资源管理问题之细粒度资源请求满足问题如何解决
Flink 细粒度资源管理问题之细粒度资源请求满足问题如何解决
|
1月前
|
资源调度 调度 流计算
Flink 细粒度资源管理问题之为不同的SSG配置资源如何解决
Flink 细粒度资源管理问题之为不同的SSG配置资源如何解决
|
1月前
|
存储 NoSQL 分布式数据库
Flink 细粒度资源管理问题之调整 slot 配置来提高资源利用效率如何解决
Flink 细粒度资源管理问题之调整 slot 配置来提高资源利用效率如何解决
|
1月前
|
Kubernetes 负载均衡 网络协议
在K8S中,Service的类型有哪几种,请说⼀下他们的用途?
在K8S中,Service的类型有哪几种,请说⼀下他们的用途?
|
28天前
|
Kubernetes jenkins 持续交付
Jenkins 与 Kubernetes 的集成:实现高效的资源管理和自动化部署
【8月更文第31天】随着微服务架构的普及,Kubernetes 已经成为了容器编排的事实标准。Kubernetes 提供了一种强大的方式来管理容器化的应用程序,而 Jenkins 则是持续集成与持续部署(CI/CD)领域的一个重要工具。将 Jenkins 与 Kubernetes 集成,不仅可以充分利用 Kubernetes 的资源管理能力,还能通过 Jenkins 实现自动化构建、测试和部署,从而提高开发效率和部署速度。本文将详细介绍如何将 Jenkins 集成到 Kubernetes 环境中,并提供具体的代码示例。
79 0
|
30天前
|
Kubernetes Cloud Native 应用服务中间件
Kubernetes 自动伸缩策略:优化资源利用率
【8月更文第29天】在现代云原生环境中,应用的流量往往具有不可预测性。为了应对这种变化,Kubernetes 提供了多种自动伸缩机制来动态调整应用实例的数量和每个实例分配的资源。本文将深入探讨两种主要的自动伸缩工具:水平 Pod 自动伸缩器 (HPA) 和垂直 Pod 伸缩器 (VPA),并提供实际的应用示例。
55 0
|
1月前
|
Prometheus Kubernetes 监控
在K8S中,DaemonSet类型的资源特性有哪些?
在K8S中,DaemonSet类型的资源特性有哪些?