什么是 Spark 平臺(tái)?
TDW-Spark 是騰訊公司級(jí)數(shù)據(jù)平臺(tái),是騰訊海量數(shù)據(jù)處理平臺(tái)中最核心的模塊,支持百 PB 級(jí)的數(shù)據(jù)存儲(chǔ)和計(jì)算,業(yè)務(wù)涉及公司各個(gè) BG,為騰訊公司提供海量、高效、穩(wěn)定的大數(shù)據(jù)平臺(tái)支撐和決策支持,是騰訊公司最大的離線數(shù)據(jù)處理平臺(tái)。
Spark 業(yè)務(wù)所面臨的挑戰(zhàn)
Spark 網(wǎng)絡(luò)目前的現(xiàn)狀包括大規(guī)模部署 QP 連接數(shù)不夠用,使用 RDMA DC 解決連接數(shù)過(guò)多的問(wèn)題;Spark 不同應(yīng)用場(chǎng)景需要不同的 EP 個(gè)數(shù)、RPC 調(diào)用次數(shù)、Spark UCX 線程數(shù)、Block 大小等,需要聯(lián)合調(diào)配;RDMA 和 TCP 混合部署,需要兼容和故障逃生;以及網(wǎng)絡(luò)帶寬低,需要提升帶寬,降低延時(shí)。
Spark 原始的業(yè)務(wù)問(wèn)題包括:
-
通信耗時(shí)占比高:Spark Shuffle 時(shí)間占 Spark 運(yùn)行總時(shí)間的 30% - 40%,造成 Spark 任務(wù)完成時(shí)間長(zhǎng)。
-
業(yè)務(wù)需求:網(wǎng)絡(luò) IO 和磁盤(pán) IO 是 Spark Shuffle 的瓶頸,需要提高通信效 率,提高計(jì)算效率。
-
降本增效:五萬(wàn)張已經(jīng)部署的 NVIDIA ConnectX-5 網(wǎng)卡需要提高性能利用率,切換到 RDMA,提高業(yè)務(wù)帶寬。
為了應(yīng)對(duì)上述問(wèn)題及挑戰(zhàn),騰訊進(jìn)行了 Spark RDMA 大規(guī)模部署網(wǎng)絡(luò)的工作,主要從兩個(gè)方面著手:Spark RDMA 網(wǎng)絡(luò)部署和優(yōu)化,以及 Spark UCX / UCX 性能優(yōu)化。
Spark RDMA 網(wǎng)絡(luò)部署和調(diào)優(yōu)
具體部署調(diào)優(yōu)步驟:
-
搭建 37 節(jié)點(diǎn) NVIDIA ConnectX-5 網(wǎng)卡和 26 節(jié)點(diǎn) NVIDIA ConnectX-6 網(wǎng)卡 Spark 環(huán)境,部署 Spark、Spark UCX、UCX 代碼進(jìn)行長(zhǎng)穩(wěn)調(diào)優(yōu)。
-
基于 GroupByTest 和現(xiàn)網(wǎng) Spark 業(yè)務(wù)流量,在 UCX、Spark UCX、Spark 三個(gè)層次調(diào)優(yōu)對(duì)比 DC、RC 和 TCP 效果。
-
優(yōu)化 Spark UCX、UCX 代碼,根據(jù) Spark 業(yè)務(wù)調(diào)優(yōu)網(wǎng)卡和交換機(jī)配置。
-
通過(guò)在 NVIDIA ConnectX-5 和 NVIDIA ConnectX-6 Dx bond 引入 DCT,提升 Spark 業(yè)務(wù)帶寬利用率。
-
RDMA 和 TCP 網(wǎng)絡(luò)共存的情況下,保障長(zhǎng)穩(wěn)運(yùn)行和 RDMA 故障逃生。

圖 1:37 節(jié)點(diǎn)的 ConnectX-5 機(jī)群與 26 節(jié)點(diǎn)的 ConnectX-6 機(jī)群
RDMA 部署優(yōu)化完成情況:
-
大規(guī)模:使用 DCT 技術(shù)共享 QP 連接,解決了大規(guī)模 QP 不夠用 的問(wèn)題。大規(guī)模仿真下 Spark 應(yīng)用 RDMA 網(wǎng)絡(luò)滿足預(yù)期。
-
Spark 應(yīng)用和網(wǎng)絡(luò)聯(lián)合調(diào)優(yōu):實(shí)現(xiàn)了最優(yōu)的網(wǎng)卡和交換機(jī)配置,以 及 Spark 任務(wù)配置,降低了 15% - 20% 左右的讀完成時(shí)間。
-
故障逃生:Spark UCX 和 UCX 代碼層面實(shí)現(xiàn)了 RDMA 和 TCP 通道備份。確保 RDMA 故障逃生 TCP,保證穩(wěn)定運(yùn)行。
-
穩(wěn)定性保證:開(kāi)發(fā)了驅(qū)動(dòng)版本檢測(cè)、網(wǎng)卡配置和檢測(cè)、自動(dòng)化安裝升級(jí)檢測(cè)功能。開(kāi)發(fā)了測(cè)試網(wǎng)絡(luò)性能模塊,保證 Spark RDMA 各層帶寬和延時(shí)滿足預(yù)期。
Spark UCX 性能優(yōu)化
1. 參數(shù)調(diào)優(yōu):通過(guò)調(diào)整 maxReqsInFlight、numListenerThreads 等 Spark / Spark UCX 參數(shù),提升任務(wù)執(zhí)行效率,獲得最好傳輸速率,發(fā)揮最大系統(tǒng)效能。
2. CPU 利用率優(yōu)化:啟用 sleep / wakeup 特性,替代 busy waiting 模式。讓出 CPU 給 Spark 計(jì)算任務(wù),減少了 CPU 浪費(fèi),體現(xiàn)了 RDMA 的優(yōu)勢(shì)。
3. 網(wǎng)路 IO 優(yōu)化:網(wǎng)路 IO 由阻塞模型改為非阻塞模型,數(shù)據(jù)接收由同步等待改為異步通知。避免了因?yàn)榫W(wǎng)路 IO 等待而 阻塞計(jì)算任務(wù)執(zhí)行,提高了每個(gè)線程的任務(wù)吞吐量,提升了收發(fā)效率和帶寬。

圖 2:網(wǎng)絡(luò) IO 優(yōu)化
4. 調(diào)度優(yōu)化:worker 的調(diào)度方式改用全局 round-robin (RR) 調(diào)度模式,替代原有的按照 thread id 選擇 worker 的 方式。避免了 thread id 不連續(xù)引起的多個(gè)線程選擇同一 worker 的問(wèn)題。

圖 3:調(diào)度優(yōu)化
5. 數(shù)據(jù)競(jìng)爭(zhēng)優(yōu)化:將 send / receive / progress 方法打包至獨(dú)立線程運(yùn)行,保證每個(gè) worker 資源僅被單個(gè)線程 訪問(wèn) / 修改,避免了數(shù)據(jù)競(jìng)爭(zhēng),提升了線程運(yùn)行效率。
UCX 性能優(yōu)化
1. 參數(shù)調(diào)優(yōu):使用 DC 替換 RC 模式,提升傳輸帶寬,減少系統(tǒng) CPU、內(nèi)存資源消耗。開(kāi)啟 CQE zipping 和 PCI relax ordering 減少 PCI 負(fù)載。調(diào)整 UCX_ZCOPY_THRESH、UCX_RNDV_THRESH 和 UCX_RND_SCHEME,獲得穩(wěn)定高速的傳輸帶寬。
2. 網(wǎng)絡(luò)負(fù)載均衡優(yōu)化:隨機(jī)化 UDP 源端口取值,減輕由于固定端口,交換機(jī)對(duì) 5 元組哈希得到相同出端口而引起的 負(fù)載不均衡問(wèn)題,優(yōu)化網(wǎng)絡(luò)傳輸帶寬。
“Spark UCX 是 Apache Spark 的高性能 Shuffle Manager 插件,它使用 UCX 支持的 RDMA 和其他高性能傳輸來(lái)加速 Spark 作業(yè)中的 Shuffle 數(shù)據(jù)傳輸。RDMA DC(動(dòng)態(tài)連接)是一種傳輸服務(wù),旨在解決大型系統(tǒng)在使用可靠連接時(shí)的可擴(kuò)展性問(wèn)題。使用 DC,用戶可以打開(kāi)有限數(shù)量的資源,無(wú)論集群大小如何。這一優(yōu)勢(shì)對(duì)于 Spark 如此大規(guī)模的應(yīng)用程序來(lái)說(shuō)非常有好處,并且可以提高性能。”
——Amit Krig
SVP, Software Engineering & Israel R&D Site Leader, NVIDIA
部署調(diào)優(yōu)后性能提升明顯
經(jīng)過(guò)部署調(diào)優(yōu),NVIDIA ConnectX-6 環(huán)境 RDMA 傳輸性能比 TCP 平均有 18% 的提升;NVIDIA ConnectX-5 環(huán)境大部分場(chǎng)景 RDMA 傳輸性能比 TCP 平均有 16% 的提升??紤]到 Spark 任務(wù)有計(jì)算和本地 write,所以對(duì) Spark 任務(wù)整體完成時(shí)間大概有 8% 的性能提升。
NVIDIA ConnetX-6 環(huán)境 RDMA 性能提升明顯(RDMA read 通信 18% 左右提升,整體完成時(shí)間 8% 左右提升),可以大規(guī)模灰度部署 Spark 業(yè)務(wù)真實(shí)流量。NVIDIA ConnectX-5 環(huán)境大部分場(chǎng)景性能平均提升(RDMA read 通信 16% 左右提升,整體完成時(shí)間 6% 左右提升),部分場(chǎng)景 RDMA 性能較差還需要調(diào)測(cè)優(yōu)化,可以灰度部署 Spark 業(yè)務(wù),繼續(xù)優(yōu)化還有提升空間。

圖 4:ConnectX-6 網(wǎng)卡 26 臺(tái)規(guī)模 RDMA 完成時(shí)間比 TCP 低 20% 左右

圖 5:ConnectX-5 網(wǎng)卡 37 臺(tái)規(guī)模 RDMA 完成時(shí)間比 TCP 低 18% 左右

圖 6:20 臺(tái)規(guī)模 Spark 業(yè)務(wù)灰度測(cè)試,RDMA read 平均降低 20% 左右
后期計(jì)劃
Spark 項(xiàng)目通過(guò)遠(yuǎn)程直接內(nèi)存訪問(wèn)(RDMA)技術(shù)解決網(wǎng)絡(luò)傳輸中服務(wù)器數(shù)據(jù)處理延遲問(wèn)題,為騰訊 Spark 大數(shù)據(jù)平臺(tái)業(yè)務(wù)提供高帶寬、低延時(shí)的通信。該技術(shù)已在二十多臺(tái)騰訊 Spark 大數(shù)據(jù)平臺(tái)服務(wù)器完成灰度測(cè)試,運(yùn)行穩(wěn)定且 Spark Shuffle(數(shù)據(jù)讀取速率)時(shí)間平均降低 15% - 18% 左右,減少了 Spark 任務(wù)完成時(shí)間(大約 8% 左右),節(jié)約了服務(wù)器資源。計(jì)劃逐步部署到數(shù)千臺(tái) Spark 服務(wù)器。
?點(diǎn)擊“閱讀原文”或掃描下方海報(bào)二維碼,注冊(cè) NVIDIA DOCA 應(yīng)用代碼分享活動(dòng),為新一代 AI 驅(qū)動(dòng)的數(shù)據(jù)中心、高性能計(jì)算及云計(jì)算基礎(chǔ)設(shè)施帶來(lái)前所未有的創(chuàng)新。
原文標(biāo)題:NVIDIA 攜手騰訊開(kāi)發(fā)和優(yōu)化 Spark UCX 實(shí)現(xiàn)性能躍升
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
英偉達(dá)
+關(guān)注
關(guān)注
23文章
4087瀏覽量
99199
原文標(biāo)題:NVIDIA 攜手騰訊開(kāi)發(fā)和優(yōu)化 Spark UCX 實(shí)現(xiàn)性能躍升
文章出處:【微信號(hào):NVIDIA_China,微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Microchip發(fā)布專為NVIDIA DGX Spark而設(shè)計(jì)的MEC1723嵌入式控制器定制固件
全新軟件與模型優(yōu)化為NVIDIA DGX Spark注入強(qiáng)大動(dòng)力
NVIDIA DGX Spark桌面級(jí)AI超級(jí)計(jì)算機(jī)助力開(kāi)發(fā)者構(gòu)建AI模型
如何在DGX Spark上運(yùn)行NVIDIA Omniverse
NVIDIA DGX Spark系統(tǒng)恢復(fù)過(guò)程與步驟
NVIDIA DGX Spark助力構(gòu)建自己的AI模型
在NVIDIA DGX Spark平臺(tái)上對(duì)NVIDIA ConnectX-7 200G網(wǎng)卡配置教程
NVIDIA DGX Spark快速入門(mén)指南
NVIDIA黃仁勛向SpaceX馬斯克交付DGX Spark
NVIDIA DGX Spark新一代AI超級(jí)計(jì)算機(jī)正式交付
MediaTek攜手NVIDIA開(kāi)啟個(gè)人AI算力新紀(jì)元
NVIDIA DGX Spark桌面AI計(jì)算機(jī)開(kāi)啟預(yù)訂
NVIDIA加速的Apache Spark助力企業(yè)節(jié)省大量成本
NVIDIA GTC2025 亮點(diǎn) NVIDIA推出 DGX Spark個(gè)人AI計(jì)算機(jī)
NVIDIA 宣布推出 DGX Spark 個(gè)人 AI 計(jì)算機(jī)
NVIDIA 攜手騰訊開(kāi)發(fā)和優(yōu)化 Spark UCX 實(shí)現(xiàn)性能躍升
評(píng)論