RSS(EMR Remote Shuffle Service)是E-MapReduce(簡稱EMR)為了提升Shuffle穩定性和效能推出的向外延展群組件,最佳化了Spark原生的Shuffle。本文為您介紹EMR on ACK上的Spark叢集如何關聯RSS。
背景資訊
目前在ACK的情境下,Spark Shuffle面臨的問題:
Spark Shuffle對本機存放區有依賴,許多計算儲存分離的機型、使用ECI的情境下沒有內建本地碟,需要額外購買和掛載雲端硬碟,性價比和使用效率低。
Spark2在ACK環境下不支援Dynamic Allocation,Spark3基於ShuffleTracking實現了Dynamic Allocation,但Executor回收效率低下。
目前Spark Shuffle方案缺點如下:
- Shuffle Write在巨量資料量情境下會溢出,導致寫放大。
- Shuffle Read過程中存在大量的網路小包導致的Connection reset問題。
- Shuffle Read過程中存在大量小資料量的IO請求和隨機讀,對磁碟和CPU造成高負載。
- 對於M*N次的串連數,在M和N數千的規模下,作業基本無法完成。
EMR推出的RSS服務,可以最佳化上述Spark Shuffle方案的問題,完美支援ACK環境下的Dynamic Allocation。
前提條件
使用限制
Spark叢集僅支援與同一ACK叢集下的Shuffle Service叢集進行關聯。
為Spark叢集(EMR on ACK)關聯RSS叢集(EMR on ACK)時,請確保使用相同的叢集版本,以避免相容性風險。您可以在叢集詳情頁面查看叢集的版本資訊。
操作步驟
關聯RSS。
在EMR on ACK頁面,單擊已建立Spark叢集的叢集名稱。
在叢集詳情頁面的基礎資訊地區,單擊關聯ShuffleService後面的前往關聯。
在關聯集群的地區內,單擊新增。
在關聯集群對話方塊中,選擇已建立的Shuffle Service叢集,單擊關聯。
可選:配置RSS參數,詳情請參見Celeborn配置。