儲存更彈性,詳解 Fluid “ECI 環境資料訪問” 新功能

語言: CN / TW / HK

近期,Fluid 釋出了 v0.8 版本, 宣佈支援阿里雲 ECI 應用,並將 JuiceFS Runtime Controller 設定為預設安裝;JuiceFS 也就此功能與 Fluid 完成了整合和測試工作。  使用者可以在 ECI 環境中使用JuiceFS, 體驗計算與儲存的雙重極致彈性。

(還不瞭解 JuiceFS Runtime Controller 的小夥伴,推薦先閱讀: 在 Kubernetes 叢集玩轉 Fluid + JuiceFS ,這個功 能可以讓使用者 更好地在 Kubernetes 環境中使用 JuiceFS 快取管理能力

ECI(Elastic Container Instance)阿里雲彈性容器例項,是阿里雲 Serverless 和容器化的彈性計算服務。使用者無需購買和管理底層 ECS 伺服器,只需要提供打包好的映象,即可執行容器,使用者僅需要為容器實際執行消耗的資源付費。

如果說雲原生就是使資源池化,那麼 Serverless 的演進才使得基礎設施水電煤化成為可能。Serverless 的核心是快速交付、智慧彈性、更低成本。 資料智慧應用的 Serverless 化已經成為了一種趨勢,尤其是對於計算密集型任務的 AI 訓練場景來說,長期維護大量 ECS 伺服器,成本相當高。 對於這類場景,ECI 是最理想的選擇,使用者只需要為任務執行時的資源付費,即用即停,不需要長期維護 ECS 伺服器,是降本增效的最優選擇。

目前,在ECI 環境,JuiceFS 使用者可以藉助 Fluid 來使用 JuiceFS,亦可藉助 Fluid 的 Dataload 功能更方便地使用 JuiceFS 的快取預熱功能,進一步提升雲上 AI 應用的資料訪問效率。

Fluid 如何支援 ECI 應用

Fluid 通過自動識別使用者應用中使用的 Fluid PVC(PersistentVolumeClaim),將不同快取 Runtime 的 FUSE 客戶端以 Sidecar 的形式注入到 Serverless Pod 中。JuiceFS 客戶端以 Sidecar 容器的方式單獨為應用容器提供掛載服務,且與應用容器同生命週期,使用者只需要為應用執行時的資源付費即可。

同時,為了提高資料加速能力,獨立快取叢集可以長時間執行,只需單獨開幾臺 ECS 節點用以執行各 Runtime 的快取叢集,為 Sidecar 提供分散式快取服務。

整體架構如下圖。

Why JuiceFS in AI

AI 訓練場景會產生大量的小檔案,同時 AI 作業管線(Pipeline)紛繁複雜、流程長,ML/DL 框架、MPI 框架、科學計算庫、大資料計算引擎等不同元件需要對接不同的資料訪問介面;當在 Kubernetes 平臺上,尤其是 Serverless 環境使用傳統檔案系統也面臨可靠性、訪問效能等一系列問題。

JuiceFS 是一款為雲上環境設計的分散式儲存引擎,採用「資料」與「元資料」分離儲存的架構,元資料引擎可以橫向擴充套件,輕鬆支援百億小檔案儲存;並且 JuiceFS 雲服務版具備分散式快取能力,對於機器學習中需要對同一個資料集反覆訓練等場景,可以大幅提升資料訪問的效能。

JuiceFS 如何在 Fluid 中工作

通過 Fluid 我們可以快速搭建 JuiceFS 的環境,構建出 JuiceFS 獨立快取叢集,快取叢集以 StatefulSet 的形式執行在 ECS 節點中,提供分散式快取服務,而 FUSE 客戶端以 Sidecar 的方式執行在業務 Pod 中,業務 Pod 則執行在 ECI 節點上。

使用流程

具體操作可參考官網 JuiceFS 文件 [1]

準備環境

目前 Fluid on ECI 還處於公測階段,預設沒有開啟,但我們可以申請 AI 套件免費體驗 [2] 席位。

申請完畢後,我們需要建立一個 ACK 版叢集,叢集的 Kubernetes 版本不低於1.18。在 ACK 叢集中可以直接通過雲原生 AI 套件,安裝 Fluid。

使用 JuiceFS

JuiceFS 採用元資料和資料分開儲存的設計,元資料會被儲存在元資料服務引擎中,資料會被儲存在物件儲存中,物件儲存需要使用者自己提供。由於目前只有雲服務版 JuiceFS 提供分散式快取服務,本文以雲服務版 JuiceFS 為例。

1.建立 Secret 第一步在 ACK 叢集中建立保密字典,填入需要密文儲存的 token(JuiceFS 控制檯管理的 volume token)和物件儲存的 accesskey 和 secretkey。

  1. 2. 建立 JuiceFSRuntime 和 Dataset 在 JuiceFSRuntime 中指定副本數及快取地址等資訊;在 Dataset 的 options 中填入物件儲存的 bucket,在 encryptOptions 中填入引用 Secret 的值。

建立好後,可以在容器組頁面看到有 Worker Pod 創建出來:

這 5 個 Worker 就組成了一個 JuiceFS 獨立快取叢集,執行在 ECS 節點上,為客戶端提供快取服務。

  1. 3. 快取加速 快取叢集建立好後,我們可以先進行快取預熱,建立 Dataload,指定上一步建立的 Dataset。「任務」頁面的 jfs-load-loader-job 顯示完成,即代表快取叢集預熱完成。

  2. 4. 建立應用

最後我們可以建立應用了,在應用的資料卷中指定與 Dataset 同名的儲存卷,這裡我們建立一個 Job,啟動命令為統計拷貝資料的時間。同時需要給 Pod 設定以下兩個 Label:

alibabacloud.com/fluid-sidecar-target: eci
alibabacloud.com/eci: "true

應用建立好後,我們就可以看到 Pod 中有 Webhook 注入的 fluid-fuse 容器,且執行在虛擬節點上:

此時該 Pod 已經執行在 ECI 環境中了。該 Pod 執行完,日誌中就會顯示其拷貝資料的時間:

根據上面的步驟,可以看出,在有快取加速的時候,拷貝資料的時間為 1m11.16s。為了與有快取的情況做個對比,我們遵循上述過程,在不做快取加速的情況下,測試拷貝資料的時間。過程為 建立 JuiceFSRuntime -> 建立 Dataset -> 建立應用

可以看到,在沒有分散式快取的情況下,拷貝相同的資料時間為 19m 6.45s。 對於有分散式快取的時候,拷貝時間縮短到了 1m11.16s,速度提升了 19 倍。

總結

本文介紹了在ECI 環境中,使用者如何藉助 Fluid 使用 JuiceFS,並使用 JuiceFS 的分散式快取能力,來提升雲上應用的資料訪問速率。未來,JuiceFS 亦會在 CSI 中通過 Sidecar 的方式支援 Serverless 場景,使用者可以通過更加原生的方式在 ECI 中使用 JuiceFS。

關於作者

朱唯唯,Juicedata 全棧工程師,負責 JuiceFS CSI Driver 的開發和維護,負責 JuiceFS 在雲原生領域的發展。

引用連結

[1] JuiceFS 文件:  https://www.juicefs.com/docs/zh/cloud/kubernetes/use_in_eci/

[2] AI 套件免費體驗:  https://survey.aliyun.com/apps/zhiliao/DNgsKoIo1

AI 場景儲存有難題 ?

歡迎掃碼進群交流

合夥人 兼社群助手

蘇銳全天線上

使用者案例

一面資料 Hadoop 上雲      AI-雲知聲    

AI for Science-深勢科技

   理想汽車 :從Hadoop 到雲上     知乎    

線上設計平臺:稿定科技   

大搜車      環球易購     趣頭條      Shopee   

攜程冷資料場景

最佳實踐

關於Juicedata

Juicedata,杭州果汁資料科技有限公司是一家企業級儲存服務供應商,開發了雲原生分散式檔案系統 JuiceFS,致力於在大資料時代下,為客戶打造安全、高效能、自主可控的儲存基礎設施及服務。

2021年,JuiceFS 正式在 GitHub 上開源,已經獲得 6.2 K star,歡迎開發者加入我們。  (github.com/juicedata/juicefs)

:point_down: 訪問官網