我們知道目前在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)的助力,
其實這個任務調度器的提供了不僅僅任務佇列和資源管理的作用,當然該調度器還是處于范訓階段,好多功能有待提高和完善,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286551.html
標籤:其他
上一篇:Hadoop的HA高可用環境搭建
下一篇:資料倉庫的概念以及建模方法
