Fluid 0.4 新版本正式發佈:支持數據預熱,優化小文件場景

A7325037-1073-4606-AFA7-F0AC90A4E115.png

做者 | 顧榮
Photo Creidt @ 輕零node

導讀:爲了解決大數據、AI 等數據密集型應用在雲原生計算存儲分離場景下,存在的數據訪問延時高、聯合分析難、多維管理雜等痛點問題,南京大學 PASALab、阿里巴巴、Alluxio 在 2020 年 9 月份聯合發起了開源項目 Fluid。

近期 Fluid 0.4 版本正式發佈,主要新增瞭如下四項重要功能,分別是:git

  • 經過 DataLoad 自定義資源,提供簡單易用且可定製的數據預熱能力
  • 加強海量小文件數據集的支撐能力,擴展 Fluid 對 AI 應用的支持場景
  • 開放 HDFS 文件系統兼容接口,支持 Spark 等框架的數據訪問
  • 支持多數據集單節點混合部署,適應生產環境中的共享集羣環境

Fluid 項目地址https://github.com/fluid-cloudnative/fluidgithub

與 Fluid 0.3 相似,上述功能的開發需求一樣來自衆多社區用戶的生產實際反饋,此外,Fluid v0.4 還進行了一些 bug 修復和文檔更新,歡迎使用體驗 Fluid v0.4!感謝爲此版本作出貢獻的社區小夥伴,在接下來的版本功能迭代中,咱們會繼續普遍關注和採納社區建議,推進 Fluid 項目的發展,期待聽到你們更多的反饋!下文是本次新版本發佈功能的進一步介紹。api

支持主動的數據預熱

在進行 AI 應用的模型訓練時,數據預熱是一種常見的優化手段。數據預熱是指在應用運行前,將應用所須要的數據預先從遠程存儲系統中拉取到本地的計算集羣,供以後應用運行時使用。數據預熱經過一種順序的、有規則的並行數據讀取模式,避免了數據密集型應用直接消費遠程存儲系統數據時,由於隨機數據讀取形成的許多沒必要要的通訊開銷緩存

所以,在 Fluid 0.4 版本中,咱們實現了一個新的 Kubernetes 自定義資源 - DataLoad,以 Kubernetes 資源的方式爲用戶提供了聲明式的 API 接口,以控制數據預熱的相關行爲。DataLoad 自定義資源的一個簡單示例以下所示:架構

apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
  name: imagenet-dataload
spec:
  dataset:
    name: imagenet
    namespace: default

另外,經過少許的額外配置,DataLoad 還可實現子目錄加載、緩存副本數量控制、元數據同步等許多可定製的功能,更多與 DataLoad 使用相關的細節請參考 Github 上的示例文檔框架

有關 DataLoad 使用與優化效果的演示視頻以下:http://cloud.video.taobao.com/play/u/2987821887/p/1/e/6/t/1/287213603893.mp4異步

加強海量小文件數據集的支撐能力

Fluid 是雲原生環境下數據密集型應用的高效支撐平臺,所以咱們自始至終都在密切關注着 Fluid 提供的數據集支撐能力在不一樣場景下的適用性。在 Fluid 0.4 版本以前,Fluid 已經提供了諸如抽象、管理、加速、可觀測性等一系列數據集支撐能力,然而,根據社區成員的使用反饋,上述能力在海量小文件場景下的支持仍是很是初級。分佈式

考慮到海量小文件數據集在真實生產環境,尤爲是 AI 應用場景的廣泛性,咱們對海量小文件帶來的問題進行了深刻的探究,提出瞭如異步元數據加載查詢、流式數據處理等解決方案,這些解決方案目前均已集成至 Fluid 0.4 版本中,以加強 Fluid 對海量小文件數據集的支撐能力ide

如下是 Fluid 使用 Alluxio Runtime 在 400 萬小文件場景下的優化後的部分性能對比評估結果

Dingtalk_20201117100516.jpg

海量小文件的存儲管理是許多存儲系統都會遇到的棘手難題,在後續的版本中,咱們會繼續關注這個場景以及它所帶來的問題。

方便 Spark 等大數據計算框架提供數據訪問支持

除了 AI 應用外,Fluid 0.4 一樣支持 Spark 等大數據應用在其上運行。經過向用戶暴露 Alluxio 分佈式緩存引擎的 Hadoop 文件系統兼容接口 (HCFS),使得 Hadoop MapReduce, Apache Spark 等大數據計算框架編寫的數據分析應用,可以在不修改應用代碼的狀況下,直接運行於 Fluid 之上,並享受到由 Fluid 提供的分佈式緩存加速等能力

更多關於經過 HCFS 接口訪問數據的細節,請參考 Github 上的示例文檔

多數據集單節點混合部署

在真實的生產環境中,用戶會在 Kubernetes 集羣中的 GPU 節點上訓練多個任務使用多個數據集,在 Fluid 0.4 版本以前,單節點沒法同時進行多個數據集的混合部署,所以,若是多個用戶同時指望在同一個節點訪問各自所需的數據集,會出現某個用戶的數據集沒法建立的狀況。

在 Fluid 0.4 版本中,咱們爲 Fluid 增長了多數據集單節點混合部署的能力,這意味着,只要該節點上的資源足夠,來自不一樣用戶的多個數據集部署衝突的問題將再也不發生,該能力將使得 Fluid 更加適應實際生產環境的需求。另外一方面,混合部署可以有效利用空閒資源,增長集羣中各個節點的集羣資源利用率,進一步提升 Fluid 帶來的成本收益。

有關多數據集單節點混合部署的簡單介紹,可參考 Github 上的示例文檔

致謝

  • 徐之浩(南京大學 PASALab)對於支持小文件場景和數據預熱功能的貢獻
  • 謝遠東(雲知聲)對於多數據集單節點混合部署功能開發和場景驗證
  • 仇伶瑋(中國電信)對於 Fluid 架構拆分的貢獻,他將 runtime 和 dataset 控制器拆分,支持將來兩個組件的並行演進

總結

Fluid 0.4 版本將繼續致力於解決社區用戶在實際生產環境中反饋的問題和需求,擴展 Fluid 在各場景的適用性,提高用戶體驗:

  • 首先,對海量小文件數據集支撐能力的優化使 Fluid 可以更好地應對不一樣的使用場景;
  • 其次,全新的 DataLoad 自定義資源爲用戶提供了一種簡單的數據預熱解決方案;
  • 再者,對 Spark 等大數據應用數據訪問的支持使得 Fluid 可以爲不一樣種類的數據密集型應用提供支撐能力;
  • 最後,多數據集的混合部署使得 Fluid 更能適應實際生產環境的需求。

若是您有任何疑問或建議,歡迎加入釘釘交流羣參與和討論:https://img.alicdn.com/tfs/TB1Cm4ciNvbeK8jSZPfXXariXXa-452-550.png

做者簡介

顧榮  博士,南京大學計算機系副研究員,研究方向大數據處理系統,已在 TPDS、ICDE、JPDC、IPDPS、ICPP 等領域前沿期刊會議發表論文 20 餘篇,主持國家天然科學基金面上項目/青年項目、中國博士後科學基金特別資助項目多項,研究成果落地應用於阿里巴巴、百度、字節跳動、中國石化、華泰證券等公司和開源項目 Apache Spark、Alluxio,獲 2018 年度江蘇省科學技術一等獎、2019 年度江蘇省計算機學會青年科技獎,擔任中國計算機學會系統軟件專委會委員/大數據專委會通信委員、江蘇省計算機學會大數據專委會祕書長、Fluid 開源項目 co-founder、Alluxio 開源項目 PMC 成員。

相關文章
相關標籤/搜索