色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Blaze: 用Rust重寫Spark執行層,平均提升30%算力

jf_wN0SrCdH ? 來源:Rust語言中文社區 ? 2023-11-22 17:46 ? 次閱讀

大家好,我是Tim。

前一段時間,快手數據架構團隊開源了Blaze項目,它是一個利用本機矢量化執行來加速SparkSQL查詢處理的插件。

用通俗的話講就是通過使用Rust重寫Spark物理執行層來達到性能提升的目的。

并且在TPC-DS 1TB的所有測試中,Blaze相比Spark3.3減少了40%的計算時間,降低了近一半的集群資源開銷。

此外,在快手內部上線的數倉生產作業也觀測到了平均30%的算力提升,實現了較大的降本增效。

1fa3d78c-7fe1-11ee-939d-92fbcf53809c.png

今天我們就來聊一聊這個Blaze,以及近來重寫Spark執行層進行提效的諸多項目。

Spark填補了一個空白

在大數據建設的初期,單臺機器的 RAM 是有限且昂貴的,所以在進行集群規模計算時唯一可行選擇是基于 MapReduce 的 Hadoop,它可以在諸多廉價的普通主機上進行集群計算。

眾所周知,MapReduce 對磁盤 IO 的負擔非常重,而且并沒有真正發揮所有 RAM 的價值。

隨著機器硬件的發展,RAM的價格也大幅降低,這時Spark提出了彈性分布式數據集(RDD),這是一種分布式內存抽象,可以讓程序員以容錯的方式在大型集群上執行內存計算。

Spark 完美地填補了這個空白。突然間,許多大數據處理都可以非常高效地完成。

為什么要重寫Spark執行層?

而隨著硬件技術的繼續發展,Spark也需要進行相應的優化,來充分的發揮出底層硬件提供的能力。

以查詢計劃執行為例。原有的Spark引擎執行一個查詢計劃,往往采用火山模型的方式。

這種上層算子遞歸調用下層算子獲取并處理元組的方式,存在虛函數調用次數較多、指令或數據cache miss率高的缺陷,并且這種一次處理一個元組的方式無法使用CPUSIMD指令進行優化,從而造成查詢執行效率低下的問題。

向量化執行就是解決上述問題的一種有效手段

然而,我們都知道Spark是使用Scala寫的,和JAVA類似是運行在JVM上的。

在Java中,與C++或Rust相比,沒有直接的手動向量化特性,實現向量化都是由JVM自動控制的。

例如,JVM會對循環進行分析,判斷是否有類似于向量化的優化機會。

如果JVM發現某個循環中其計算次數大于一定量級,且指令可以被SIMD指令集所支持,那么它會將循環展開為并行操作,從而實現向量化執行。

publicstaticvoidvectorAdd(float[]a,float[]b,float[]result){
for(inti=0;i200;i++){
result[i]=a[i]+b[i];
}
}

如上面的代碼所示,其有可能會被JVM轉換為向量化執行。

即使循環符合向量化的條件,JVM也不能保證一定會自動實現向量化執行。在某些情況下,JVM可能會選擇跳過向量化執行。

所以,到目前為止,Spark中的性能殺手Shuffle等操作依然采用了行式數據處理。

不過對于讀寫列式文件的算子,如Parquet、Orc等,已經實現了向量化的批量操作。

除此以外,Scala、Java實現的Spark還會帶來垃圾收集(GC)開銷,這也是JAVA系語言的通病。

如果垃圾回收的時間太長,會嚴重影響任務執行的穩定性,甚至會被誤識別為節點失聯。

最后,Java還存在較高的內存消耗和無法進行低級別的系統優化等問題,這都迫使人們一直在嘗試重寫Spark執行層算子。

一直沒有開源的Photon

其實對于重寫Spark執行層算子,Spark的母公司Databricks早已進行了嘗試,并已經為其付費用戶提供了向量化的執行引擎Photon。

Photon已經被應用多年,其被定位為適用于 Lakehouse 環境的矢量化查詢引擎。在Databricks的內部數據上,Photon 已將一些客戶工作負載加速了 10 倍以上。

業界也一直有向量化執行引擎出現,例如velox、gluten(gluten可以支持velox或ck作為后端)。

velox就是一個單機/單節點的c++的向量化query runtime實現。

當然velox目標不只是Spark, 它希望統一替換大數據計算引擎的單節點runtime,包括Spark、Presto、Pytorch,以取得加速效果。

其對接Spark就是通過gluten項目進行對接的,velox目前也已基本在Meta公司內部落地。

但其開源社區一直不溫不火,甚至涼涼。

Blaze 借助Arrow DataFusion實現向量化執行引擎

Blaze的實現原理和Velox、Photon都是大同小異。

即在運行時嘗試使用向量化算子計算,如果不支持則回退回Spark原來的計算算子。

不過需要注意的是,Blaze是將Spark運行時物理運算符轉換為 Rust DataFusion的向量化實現。

關于DataFusion是什么,可以參考這篇文章:Apache Arrow DataFusion到底是什么?

目前Blaze可能還不支持聚合運算符,UDF 或 RDD API,這顯然會影響 TPC-DS 查詢的整體運行時間。不過,在快手內部據傳Blaze中已經添加了對聚合運算符的支持。

在開源的Blaze已支持Spark3.0和Spark3.3版本,其使用方式和gluten類似,通過在Spark環境中添加相應的Jar包實現功能擴展。

目前從其跑的TPC-DS 查詢性能測試上可以看出,Blaze平均提升30%的性能,節約了40%的集群資源。

然而其問題也和Velox一樣。

一方面需要在Spark集群環境中安裝特定版本的Rust/C++,而且Rust/C++在龐大的集群機器中可能會存在各種環境問題。

另一方面,其不支持UDF(當然Photon也不支持),在真實的計算任務中可能會存在各種兼容性問題,而導致需要回退到原始的Spark執行引擎上,可能會造成原始任務的性能倒退。

說白了,即不可能全局開啟Blaze性能優化,目前也只能針對特定任務特點用戶進行開啟優化。

Blaze引擎優化定位只是針對Spark引擎,而且在向量化的實現上又是基于DataFusion開源項目,相比Velox引擎其未來開源的路可能會比較好走一點,畢竟目標沒那么大嘛。

當然Blaze的出現還有一個作用,也許會迫使Databricks開源他們藏掖已久的Photon,這當然是一件好事。

就像當年Iceberg迫使Databricks開源其收費的數據湖存儲引擎Delta Lake一樣。

總結

Spark執行算子的向量化是未來必須要走的路,Blaze項目通過將Spark物理執行層算子轉換為Rust Arrow DataFusion向量化算子來提升性能,目前已在快手內部部分業務上線,并實現30%的性能提升。

在快手內部的成功,并不一定可以在開源社區獲得成功。

一方面,Spark社區并不會允許其并入Spark項目來獲得更大關注,另一方面這種優化實現方式在真實重要的業務場景,必然存在很多自定義的函數或算子,這給其在其他公司數據團隊上的落地造成了困難。

這可能需要數據團隊具有不破不立的精神,否則其并不能帶來全平臺的性能收益,而這顯然會使得使用Blaze項目所需的成本項異常顯眼。

最后,希望Blaze項目可以成功,至少可以迫使Databricks開源其Photon,也希望更多native引擎開源來提升Spark任務執行性能。



聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 磁盤
    +關注

    關注

    1

    文章

    380

    瀏覽量

    25245
  • SPARK
    +關注

    關注

    1

    文章

    105

    瀏覽量

    19948
  • Rust
    +關注

    關注

    1

    文章

    230

    瀏覽量

    6641

原文標題:Blaze: 用Rust重寫Spark執行層,平均提升30%算力

文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ”的分層定義-初級

    ”(Computility,也被稱為計算能力或計算)通常而言是指計算機、服務器、GPU或其他硬件設備執行計算任務的速度和能力。
    的頭像 發表于 07-27 14:02 ?3249次閱讀
    “<b class='flag-5'>算</b><b class='flag-5'>力</b>”的分層定義-初級<b class='flag-5'>算</b><b class='flag-5'>力</b>

    大茉莉X16-P,5800M大稱王稱霸

    Rykj365
    發布于 :2024年01月25日 14:54:52

    Spark job是怎么被調度執行

    Spark job 的執行流程簡介
    發表于 08-22 08:24

    基于RDMA技術的Spark Shuffle性能提升

    一篇文章教你使用RDMA技術提升Spark的Shuffle性能
    發表于 10-28 16:46

    rx580,rx580顯卡,rx588,rx588顯卡 精選資料分享

    約有差別,30Mh左右都是正常的無論是藍寶石,華碩,技嘉,銘瑄,迪蘭,訊景的580顯卡都是這個。〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓什么是熱錢包?熱錢包是指互聯網能夠訪問你私鑰的錢包,熱
    發表于 07-23 06:59

    網絡:和網絡的關系

    網絡的核心特征,是它通過,實現了對資源、網絡資源的全面接管,可以讓網絡實時感知用戶的
    的頭像 發表于 12-14 16:09 ?4610次閱讀
    <b class='flag-5'>算</b><b class='flag-5'>力</b>網絡:<b class='flag-5'>算</b><b class='flag-5'>力</b>和網絡的關系

    CloudflareRust重寫Nginx C模塊,構建沒有Nginx的未來

    近日,Cloudflare 工程師介紹了如何使用 Rust 重寫基于 C 語言的 Nginx 模塊。Cloudflare 工程師在博客寫道,他們 Rust 為 Cloudflare
    的頭像 發表于 03-08 09:36 ?782次閱讀

    Rust重寫的LSP:KCL IDE 插件的功能介紹與設計解析

    在這次更新中,我們發布了全新的 KCL VS Code 插件,并且 Rust 重寫了 LSP 的 Server 端。我們提供了 IDE 中常用的代碼輔助功能,如高亮、跳轉、補全、Outline、懸停、錯誤提示等。
    的頭像 發表于 05-11 09:39 ?1003次閱讀
    <b class='flag-5'>Rust</b><b class='flag-5'>重寫</b>的LSP:KCL IDE 插件的功能介紹與設計解析

    Windows 11初嘗Rust,36000行內核代碼已重寫!

    更早些時候,微軟 Rust 重寫了 DirectWrite Core 庫的概念驗證,它是 Windows 的 DWrite 引擎的 Windows App SDK 實現,用于文本分析、布局和渲染
    的頭像 發表于 05-19 16:39 ?1039次閱讀
    Windows 11初嘗<b class='flag-5'>Rust</b>,36000行內核代碼已<b class='flag-5'>重寫</b>!

    一體+Chiplet能否應對AI大和高能耗的挑戰?

    十萬京(=10^21)次的浮點運算 ),與2020年相比提升30倍;到2030年,有望增至56ZFLOPS。翻倍時間在明顯縮短,大模型出現后,帶來了新的
    的頭像 發表于 05-22 09:36 ?773次閱讀
    存<b class='flag-5'>算</b>一體+Chiplet能否應對AI大<b class='flag-5'>算</b><b class='flag-5'>力</b>和高能耗的挑戰?

    網絡的概念及整體架構

    服務基于分布式微服務架構,支持應用解構成原子化功能 組件并組成算法庫,由 API Gateway統一調度,實現 原子化算法按需實例 化。
    發表于 05-25 16:47 ?3次下載
    <b class='flag-5'>算</b><b class='flag-5'>力</b>網絡的概念及整體架構

    阿里云倚天實例已為數千家企業提供,性價比提升30%

    在2023云棲大會上,阿里云宣布倚天ECS實例已服務數千家企業,覆蓋電商、生命科學、交通物流及游戲等領域,整體性價比提升30%。 2022年,平頭哥自研云原生CPU倚天710在阿
    的頭像 發表于 11-03 11:25 ?852次閱讀
    阿里云倚天實例已為數千家企業提供<b class='flag-5'>算</b><b class='flag-5'>力</b>,性價比<b class='flag-5'>提升</b>超<b class='flag-5'>30</b>%

    一次Rust重寫基礎軟件的實踐

    受到2022年“谷歌使用Rust重寫Android系統且所有Rust代碼的內存安全漏洞為零” [1] 的啟發,最近筆者懷著濃厚的興趣也順應Rust 的潮流,嘗試著將一款C語言開發的基礎
    的頭像 發表于 01-25 11:21 ?687次閱讀

    的分類與現代生活

    提升使得用戶能夠享受到更加流暢和豐富的數字體驗。 個人通常指的是個人使用的計算設備,如智能手機、個人電腦、平板電腦等。這些設備通過中央處理器(CPU)和圖形處理器(GPU)等硬
    的頭像 發表于 08-26 15:05 ?249次閱讀
    <b class='flag-5'>算</b><b class='flag-5'>力</b>的分類與現代生活
    主站蜘蛛池模板: 最近免费中文MV在线字幕 | 久久一级片 | 欧美高清videos 360p | my pico未删减在线观看 | 色综合欧美色综合七久久 | 99蜜桃在线观看免费视频网站 | 亚洲伦理精品久久 | jlzzzjizzzjlzzz亚洲| 久久久久久久尹人综合网亚洲 | 成人在线视频在线观看 | 99精品国产高清自在线看超 | 国产在线观看黄 | 国产一区二区三区四区五在线观看 | 蜜芽在线播放免费人成日韩视频 | 国产精品综合AV一区二区国产馆 | 四虎影视国产精品亚洲精品hd | 人妻少妇69式99偷拍 | www.色小姐| 久久综合中文字幕无码 | 青青草原在线新免费 | 亚洲国产中文字幕在线视频 | 美女pk精子4 | 大相蕉伊人狼人久草av | YY600800新视觉理论私人 | 国产盗摄一区二区三区 | 蜜桃人妻无码AV天堂三区 | 久久99精品AV99果冻 | 欧美日韩在线亚洲一 | 亚洲色婷婷久久精品AV蜜桃 | 女人被躁到高潮嗷嗷叫小 | 岛国大片在线观看免费版 | 免费观看视频成人国产 | 最近韩国日本免费观看mv免费版 | 国产亚洲精品精华液 | 国产又粗又猛又爽黄老大爷 | 国产欧美一区二区精品仙草咪 | 久久精品观看影院2828 | 桥本有菜护士 | 亚洲精品乱码久久久久久直播 | 国产精品亚洲二线在线播放 | 日本无码毛片一区二区手机看 |