11月4日,在2021騰訊數字生態大會上,騰訊宣布將開源自主研發的分布式遠程Shuffle服務Firestorm。該服務的開源不但可以助推分布式計算的云原生部署,還能解決大數據分布式計算過程中的痛點,提升計算資源的利用率。
在分布式計算領域,Shuffle過程由于存在著磁盤IO隨機讀寫問題,一直是分布式計算任務的性能瓶頸,除了降低計算任務的運行效率,還降低硬件資源的利用率。同時,由于Shuffle過程對于本地磁盤有容量需求(如Spark計算引擎),對于計算引擎的云原生化也制造了阻礙。近年來,云原生的需求不斷增加,而和大數據息息相關的分布式計算領域也在不斷探索如何云原生化這樣的課題。業界對于Shuffle過程存在的問題越來越關注,改善的需求也越來越迫切,不但出現了各種解決方案,部分國外廠商也開源了相關的實現。
騰訊大數據團隊在推進云原生的過程中也遇到了相同的問題,由于缺乏一個通用,便于擴展的遠程Shuffle服務的開源方案,團隊提議進行自研并最終開源回饋社區,Firestorm則在這樣的背景下應然而生。相比已經開源的同類服務,騰訊Firestorm能適用于更多的應用場景,更靈活的接入各類分布式計算引擎,還能支持各種不同的存儲系統。
為了達到支持云原生的部署模式并提升計算資源的使用率,Firestorm具備諸多特性:
1. 支持多種集群部署模式。Firestorm將Shuffle數據存儲在了遠程,因此計算集群將不再需要大量存儲空間。同時,大數據集群的部署模式也變得更加靈活,基于Firestorm,計算存儲分離,計算存儲混布,在線離線混布等部署模式都得到很好的支撐。
2. 支持Shuffle數據聚合。Firestorm通過服務端對Shuffle數據進行分揀操作,從而達到了數據聚合的目的,大幅降低了在Shuffle過程中對于磁盤的隨機訪問。同時,Firestorm在客戶端和服務端都使用了數據緩存機制,最大化利用內存資源,從而降低了磁盤訪問的性能損耗。
3. 靈活適配各種計算引擎和存儲方式。Firestorm在實現上采用了計算引擎和存儲方式的解耦,因此能通過實現引擎側接口,靈活支持各類計算引擎(如Spark,MR等)。同樣,對于Shuffle數據的存儲方式也能支持,如本地文件,HDFS文件及混合模式等。
4. 支持Shuffle數據的正確性校驗。Firestorm以Block為單位存儲Shuffle數據,對于每個Block都會存儲CRC值等元數據。基于這些元數據,不但能過濾無效數據,還能檢測數據在整條鏈路的傳遞過程中是否缺失,完整,保障計算任務執行過程中的數據正確性。
5. 支持整體架構多活模式。Firestorm采用了主從架構,能更好的管理集群的狀況,在任務調度過程中也能采用更靈活的調度方式,提高整體集群資源利用率。為了滿足服務高可用,對于主節點還增加了主-備多活模式,提升了集群服務的穩定性。
6. 支持多種指標監控。Firestorm對于集群的運行狀況,采集了大量的運行時指標,基于這些指標能實時掌握集群的負載及健康狀況,在使用過程中及時準確地發現問題,便于問題的排查。
7. 支持服務在線升級。Firestorm具備節點黑名單功能,客戶度和服務端也采用了版本匹配機制?;谶@些特征,Firestorm能實現在生產環境在線升級,同時做到應用無感知,增強了生產的實用性。
目前Firestorm在騰訊內部已經在近萬臺規模的在線離線混布集群落地,每天支撐近5W的分布式計算作業,每天的Shuffle數據量接近2PB,已經達到了初期制定的第一階段目標,具備了相當的生產環境成熟度。除此以外,Firestorm在Shuffle數據量較大的分布式計算任務中能顯著提升性能和成功率,有效支撐現網Shuffle量100TB+的分布式作業。
騰訊大數據團隊表示:“將騰訊自主研發的分布式遠程Shuffle服務Firestorm開源,不僅可以將騰訊在大數據分布式計算領域的技術和經驗和全球開發者分享,還能夠汲取該領域在全球范圍內的優秀理念,最終推動分布式計算領域在云原生時代的進一步發展。” 未來團隊還會進一步對其優化,在開源后,騰訊也將和社區的開發者一起對Firestorm不斷完善。