Hago 於 2018 年 4 月上線,是歡聚集團旗下的一款多人互動社交明星產品。Hago 融合優質的匹配能力和多樣化的垂類場景,提供互動遊戲、多人語音、視頻直播、 3D 虛擬形象互動等多種社交玩法,致力於爲用戶打造高效、多樣、最具沉浸式的社交娛樂體驗,在東南亞、中東和南美等地區擁有廣泛的用戶羣。
在技術層面,Hago 提供優秀的自研音視頻技術,實現更加穩定、高效和優質的數字人服務。包括 3D 超寫實模型、真人主播模型製作,虛擬人語音、表情驅動,自然聲音的文字轉語音(TTS),成熟的虛擬直播能力。
長期以來,Hago 都是在 IDC 裏運行大數據任務,以支撐上面的許多產品,從 2022 年開始,Hago 開始將大數據業務遷移上雲,並以 Spark on ACK 的形式來運行,本文主要針對遷移過程進行介紹。
IDC 中遇到的問題
起初,Hago 的 Spark 任務都是跑在 IDC 裏的 Hadoop 集羣裏,當時主要面臨幾個問題:
- 資源限制問題:當資源不足時,導致任務堆積、排隊
- 擴容的時效性:集羣擴容邏輯比較複雜,特別是節假日有活動時,往往要提前一週準備擴容
- 資源利用率問題:Spark 任務有明顯的波峯波谷,波谷的資源浪費明顯
- 爲了解決上面幾個問題,Hago 決定把大數據業務用雲原生的方式遷移上雲
實施
Spark 項目從 3.1 開始,Spark on Kubernetes 的功能正式 GA。
所以,ACK 作爲託管的 Kubernetes 發行版,提供更高的性能和更強穩定性,自然成爲阿里雲上 Spark 的最佳運行底座,這裏爲了更好的彈性效果,Hago 選擇了 Serverless 版本的 ACK。
ACK Serverless
在 ACK Serverless 集羣中,無需購買節點即可直接部署容器應用,無需對集羣進行節點維護和容量規劃,並且根據應用配置的 CPU 和內存資源量進行按需付費。ACK Serverless 集羣提供完善的 Kubernetes 兼容能力,同時降低了 Kubernetes 使用門檻,用戶更專注於應用程序,而不是管理底層基礎設施。
同時,ACK Serverless 集羣中的 Pod 基於阿里雲彈性容器實例 ECI 運行在安全隔離的容器運行環境中。每個 Pod 容器實例底層通過輕量級虛擬化安全沙箱技術完全強隔離,容器實例間互不影響。
在 Spark 這種大規模業務峯值脈衝和任務調度的場景,ACK Serverless 集羣的彈性優勢也更加明顯,可以在 30s 內交付幾千個 Pod。
但在真正運行之前還有一些問題需要解決:
存算分離
上面提到,Spark 任務對算力的需求不是 7*24 小時的,但是存儲是一直留存的,如果用傳統的方式,在虛擬機上搭建 HDFS 集羣,那就需要常駐大量的算力,也意味着產生大量的浪費。
Hago 選擇存算分離的方案,將數據放在 OSS 裏,通過 OSS-HDFS 服務把數據用 HDFS 接口暴露出來,方便 Spark 任務讀取。
詳情請參閱:OSS-HDFS 服務概述[1]
shuffle service 的選型
shuffle 是 Spark 中最基本的過程之一,同時,shuffle 對於 Spark 應用程序的性能至關重要。Spark 社區提供了默認的 shuffle service[2],但存在一些問題:
- Spark Shuffle 對本地存儲有依賴,許多計算存儲分離的機型、使用 ECI 的場景下沒有自帶本地盤,需要額外購買和掛載雲盤,性價比和使用效率低
- Spark 基於 ShuffleTracking 實現了 Dynamic Allocation,但 Executor 回收效率低下
具體表現如下:
- Shuffle Write 在大數據量場景下會溢出,導致寫放大
- Shuffle Read 過程中存在大量的網絡小包導致的 Connection reset 問題
- Shuffle Read 過程中存在大量小數據量的 IO 請求和隨機讀,對磁盤和 CPU 造成高負載
- 對於 M*N 次的連接數,在 M 和 N 數千的規模下,作業基本無法完成
EMR 推出的 RSS 服務,可以優化上述 Spark Shuffle 方案的問題,完美支持 ACK 環境下的 Dynamic Allocation。
詳情請參閱:EMR Remote Shuffle Service[3]
落地效果
最終落地的架構圖大致如上所示,取得了非常理想的效果:
- 基本不需要提前準備,擴容只需要 30s
- 任務不再需要排隊
- 不需要關心 IDC 的硬件故障問題
相關鏈接:
[1] OSS-HDFS 服務概述
https://help.aliyun.com/zh/oss/user-guide/overview-1
[2] shuffle service
[3] EMR Remote Shuffle Service
https://help.aliyun.com/zh/emr/emr-on-ecs/user-guide/celeborn#task-2184004
作者:華相
本文爲阿里雲原創內容,未經允許不得轉載。