我们知道目前在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,把中间结果存

本文探讨了Spark on Kubernetes环境下两项未来工作:动态资源分配及外部Shuffle服务。介绍了RSS(Remote Shuffle Service)如何解决Pod生命周期问题,并讨论了YuniKorn调度器在任务队列和资源管理方面的作用。
最低0.47元/天 解锁文章
536





