
作者 | 顧榮
Photo Creidt @ 輕零
導讀:為了解決大資料、AI 等資料密集型應用在雲原生計算存儲分離場景下,存在的資料通路延時高、聯合分析難、多元管理雜等痛點問題,南京大學 PASALab、阿裡巴巴、Alluxio 在 2020 年 9 月份聯合發起了開源項目 Fluid。
近期 Fluid 0.4 版本正式釋出,主要新增了以下四項重要功能,分别是:
- 通過 DataLoad 自定義資源,提供簡單易用且可定制的資料預熱能力
- 增強海量小檔案資料集的支撐能力,擴充 Fluid 對 AI 應用的支援場景
- 開放 HDFS 檔案系統相容接口,支援 Spark 等架構的資料通路
- 支援多資料集單節點混合部署,适應生産環境中的共享叢集環境
Fluid 項目位址:
https://github.com/fluid-cloudnative/fluid與
Fluid 0.3類似,上述功能的開發需求同樣來自衆多社群使用者的生産實際回報,此外,Fluid v0.4 還進行了一些 bug 修複和文檔更新,歡迎使用體驗 Fluid v0.4!感謝為此版本做出貢獻的社群小夥伴,在接下來的版本功能疊代中,我們會繼續廣泛關注和采納社群建議,推動 Fluid 項目的發展,期待聽到大家更多的回報!下文是本次新版本釋出功能的進一步介紹。
支援主動的資料預熱
在進行 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 對海量小檔案資料集的支撐能力。
以下是 Fluid 使用 Alluxio Runtime 在 400 萬小檔案場景下的優化後的部分性能對比評估結果:
海量小檔案的存儲管理是許多存儲系統都會遇到的棘手難題,在後續的版本中,我們會繼續關注這個場景以及它所帶來的問題。
友善 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 成員。