Fluid 0.5 版本:开启数据集缓存在线弹性扩缩容之路
作者 | 顧榮? 南京大學(xué)PASALab, Fluid項目co-founder
來源 | 阿里巴巴云原生公眾號
Fluid 是云原生環(huán)境下數(shù)據(jù)密集型應(yīng)用的高效支撐平臺,項目自開源發(fā)布以來吸引了眾多相關(guān)方向領(lǐng)域?qū)<液凸こ處煹年P(guān)注,在大家的積極反饋下社區(qū)不斷演進。近期 Fluid 0.5 版本正式發(fā)布,在該版本中,Fluid 主要新增改善以下三個方面內(nèi)容:
- 豐富數(shù)據(jù)集的操作功能,支持在線彈性擴縮容、元數(shù)據(jù)備份和恢復(fù)。
- 支持多樣環(huán)境配置部署,滿足用戶的個性化部署配置需求。
- 新增數(shù)據(jù)緩存引擎實現(xiàn),增加用戶在公有云上的引擎選擇。
Fluid 開源項目地址:https://github.com/fluid-cloudnative/fluid
這三大主要功能的開發(fā)需求來自眾多社區(qū)用戶的實際生產(chǎn)反饋,此外 Fluid v0.5 還進行了一些 bug 修復(fù)和文檔更新,歡迎使用體驗 Fluid v0.5!
Fluidv0.5 下載鏈接:https://github.com/fluid-cloudnative/fluid/releases
下文是本次新版本發(fā)布功能的進一步介紹。
豐富數(shù)據(jù)集的操作功能
在本版本中 Fluid 重點豐富了核心抽象對象 —— Dataset(數(shù)據(jù)集)的相關(guān)操作功能,從而使數(shù)據(jù)密集型應(yīng)用能夠更好地利用云原生提供的彈性、可觀測性等基礎(chǔ)功能,并增強了用戶對數(shù)據(jù)集管理的靈活性。
1. 數(shù)據(jù)集在線彈性緩存擴縮容
這是社區(qū)用戶一直期待的功能!在 Fluid v0.5 之前,如果用戶想要調(diào)整數(shù)據(jù)集的緩存能力,需要以全部卸載緩存引擎再重部署的方式完成。這種方式耗時耗力,還必須考慮數(shù)據(jù)緩存全部丟失的高昂代價。因此,在新版本中,我們?yōu)閿?shù)據(jù)集提供了對緩存彈性擴縮容的支持,用戶可以根據(jù)自己的場景需求,以不停機方式 on-the-fly 地按需增加某數(shù)據(jù)集的緩存容量以加速數(shù)據(jù)訪問(擴容)或減少某個不頻繁使用的數(shù)據(jù)集的緩存容量(縮容),從而實現(xiàn)更加精細的彈性資源分配,提高資源利用率。Fluid 內(nèi)置的控制器會根據(jù)策略選擇合適的擴縮容節(jié)點,例如在縮容時會結(jié)合節(jié)點上運行任務(wù)情況和節(jié)點緩存比例作為篩選條件。
執(zhí)行彈性數(shù)據(jù)集的緩存能力彈性擴縮容,用戶只需運行如下命令:
kubectl scale alluxioruntimes.data.fluid.io {datasetName} --replicas={num}其中 datasetName 對應(yīng)于數(shù)據(jù)集的名稱,replicas 指定緩存節(jié)點的數(shù)目。
有關(guān)數(shù)據(jù)集手動擴縮容及其效果的演示視頻:http://cloud.video.taobao.com/play/u/2987821887/p/1/e/6/t/1/302459823704.mp4
更多關(guān)于數(shù)據(jù)集手動擴縮容的操作細節(jié),請參考 Github 上的示例文檔。
2. 元數(shù)據(jù)的備份與恢復(fù)
該功能增強了 Fluid 數(shù)據(jù)集元數(shù)據(jù)管理的靈活性。先前的 Fluid v0.4 已經(jīng)支持將數(shù)據(jù)集的元數(shù)據(jù)(例如,文件系統(tǒng) inode tree)加載至本地,并且會記錄數(shù)據(jù)集的一些關(guān)鍵統(tǒng)計信息(例如,數(shù)據(jù)量大小和文件數(shù)量)。然而,一旦用戶銷毀本地數(shù)據(jù)集,這些元數(shù)據(jù)信息也都將丟失,重新構(gòu)建數(shù)據(jù)集時需再次從底層存儲系統(tǒng)獲取。
因此,在 Fluid v0.5 中,我們新增了一個 K8s 自定義資源對象 —— DataBackup,為用戶提供了聲明式的 API 接口,以控制數(shù)據(jù)備份的相關(guān)行為。DataBackup 自定義資源對象構(gòu)建的一個簡單示例如下所示:
apiVersion: data.fluid.io/v1alpha1 kind: DataBackup metadata:name: hbase-backup spec:dataset: hbasebackupPath: pvc://<pvcName>/subpath1/subpath2/再次創(chuàng)建數(shù)據(jù)集時,只需新增一個指定備份文件位置的字段:
apiVersion: data.fluid.io/v1alpha1 kind: Dataset metadata:name: hbase spec:dataRestoreLocation:path: pvc://pvc-local/subpath1/mounts:- mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.2.6/此時,Fluid 將首先從備份文件加載元數(shù)據(jù)和數(shù)據(jù)集統(tǒng)計信息,從而很大地提高元數(shù)據(jù)加載速度。
?
更多關(guān)于進行數(shù)據(jù)集元數(shù)據(jù)備份與恢復(fù)的操作細節(jié),請參考 Github 上的示例文檔。
3. 數(shù)據(jù)集的可觀測性優(yōu)化
Fluid v0.5 還進一步增強了數(shù)據(jù)集的可觀測性能力,具體包括兩個部分:
1)與 Prometheus 相結(jié)合
該特性能夠支持數(shù)據(jù)集的可用性和性能指標收集,并且通過 Grafana 進行可視化展示。目前已支持 AlluxioRuntime 的實現(xiàn),使用者可以方便地了解當前可緩存節(jié)點、緩存空間、現(xiàn)有緩存比例、遠程讀、短路讀等性能指標。整個配置過程非常簡單,達到了對于數(shù)據(jù)集監(jiān)控系統(tǒng)“開箱即用"的效果。
具體的使用方法,請參考 Github 上的示例文檔。
2)新增數(shù)據(jù)集緩存命中率指標
該功能可以標識過去 1 分鐘內(nèi)對該數(shù)據(jù)集的全部訪問中有多少訪問命中了分布式緩存。該指標一方面能夠幫助用戶分析他們數(shù)據(jù)密集型應(yīng)用中的性能瓶頸,量化查看 Fluid 在整個應(yīng)用運行的工作流中起到的效果;另一方面能夠幫助用戶在應(yīng)用性能提升和緩存資源占用間進行行權(quán)衡,做出合理的擴縮容決策。
這一指標被添加在 Fuild v0.5?的 Dataset.Status.CacheStates 的 Dataset CRD 資源狀態(tài)中,具體來說包括:
- Cache Hit Ratio:過去一分鐘分布式緩存命中的訪問百分比。
- Local Hit Ratio:過去一分鐘本地緩存命中的訪問百分比。
- Remote Hit Ratio:過去一分鐘遠程緩存命中的訪問百分比。
在 Fluid v0.5 中,用戶可以使用以下命令方便地查看緩存命中率指標:
kubectl get dataset <dataset-name> -o wide NAME ... CACHE HIT RATIO AGE <dataset-name> ... 86.2% 16m支持多樣環(huán)境配置部署
自 Fluid 0.4 版本發(fā)布以來,我們根據(jù)社區(qū)用戶實際部署反饋的問題和需求,對 Fluid 在多樣環(huán)境下的部署配置增加了更多支持。
1. 支持 Fuse 的 global 模式
在 Fluid 中,Dataset 資源對象中所定義的遠程文件是可被調(diào)度的,這意味著你能夠像管理 Pod 一樣管理遠程文件緩存到 Kubernetes 集群上的位置。執(zhí)行計算的 Pod 可以通過 Fuse 客戶端訪問數(shù)據(jù)文件。在先前版本的 Fluid 中,Fuse 客戶端總是會調(diào)度到緩存所在的節(jié)點上,但是用戶不能自由控制 Fuse 的調(diào)度。
在 Fluid v0.5 中,我們?yōu)?Fuse 新增了 global 部署模式。在該模式下,Fuse 默認會全局部署到所有節(jié)點上。用戶也可以通過指定 Fuse 的 nodeSelector 來影響 Fuse 的調(diào)度結(jié)果。同時,緩存會優(yōu)先調(diào)度部署在執(zhí)行計算 Pod 數(shù)量較多的節(jié)點上。
具體使用非常簡單,可以參考 Github 上的示例文檔。
2. 支持 HDFS 的用戶級配置
很多社區(qū)用戶使用分布式緩存系統(tǒng) Alluxio?作為 Fluid 數(shù)據(jù)集的緩存引擎。在數(shù)據(jù)集持久化存儲于 HDFS 文件系統(tǒng)的情況下,要使得 Alluxio 能夠正常訪問底層 HDFS,Alluxio 集群需要提前獲取該 HDFS 的各類配置信息。
在 Fluid v0.5 中,我們使用 Kubernetes 的原生資源為上述場景提供支持。用戶首先需要將 HDFS 的相關(guān)配置文件(e.g. hdfs-site.xml 和 core-site.xml)以 ConfigMap 方式創(chuàng)建到 Kubernetes 環(huán)境中,接著在創(chuàng)建的 AlluxioRuntime 資源對象中引用上述創(chuàng)建的 ConfigMap 從而實現(xiàn)上述功能。
AlluxioRuntime 資源對象的一個示例如下所示:
apiVersion: data.fluid.io/v1alpha1 kind: AlluxioRuntime metadata:name: my-hdfs spec:...hadoopConfig: <configmap-name>...至此,創(chuàng)建出的 Alluxio 集群將能夠正常地訪問 HDFS 集群中的數(shù)據(jù)。更多內(nèi)容可參考 Github 上的示例文檔。
新增數(shù)據(jù)緩存引擎實現(xiàn)
Fluid 默認使用的分布式緩存 Runtime 是 AlluxioRuntime,為了支持不同環(huán)境用戶對緩存系統(tǒng)的需求,在之前的版本中 Fluid 已經(jīng)將分布式緩存 Runtime 接入框架做成了可插拔的架構(gòu)。在 Fluid v0.5 中,來自阿里云的社區(qū)貢獻者基于該框架開發(fā)了 JindoRuntime,新增了一種支撐 Fluid Dataset 數(shù)據(jù)管理和緩存的執(zhí)行引擎實現(xiàn)。用戶可以在 Fluid 中通過 JindoRuntime 使用 JindoFS 的 Cache 模式進行遠端文件的訪問和緩存。在 Fluid 上使用和部署 JindoRuntime 流程簡單、兼容原生 K8s 環(huán)境、開箱即用。
總結(jié)
在 Fluid v0.5 中,我們對 Fluid 的功能特性與用戶體驗都進行了豐富和增強。
首先,Fluid v0.5 進一步增加了數(shù)據(jù)集的功能操作:
- 提供數(shù)據(jù)集在線彈性擴縮容能力,實現(xiàn)更靈活、更精細的集群資源分配控制。
- 新增 DataBackup CRD,實現(xiàn)了數(shù)據(jù)集文件元數(shù)據(jù)等信息的備份與恢復(fù),幫助完成數(shù)據(jù)集緩存系統(tǒng)的快速重啟。
- 新增緩存命中率指標,幫助用戶更好量化分析 Fluid 提供的加速效果。
其次,Fluid 支持更多環(huán)境模式和配置,滿足更多真實場景的部署需求。
最后,Fluid 新增了基于 JindoFS 的分布式緩存 Runtime —— JindoRuntime,為用戶在多樣化部署環(huán)境中提供不同的緩存引擎選擇。
我們會繼續(xù)廣泛關(guān)注和采納社區(qū)建議,推動 Fluid 項目的長期發(fā)展,期待聽到大家更多的反饋。如果您有任何疑問或建議,歡迎加入 Fluid 用戶群參與交流或在 Github 上與我們討論:
鳴謝
感謝為此版本做出貢獻的社區(qū)小伙伴們,他們包括來自阿里云的王濤、騰訊云的謝遠東、中國電信的仇伶瑋、南京大學(xué) PASALab 的徐之浩、候浩軍、陳國旺、陳雨銓等同學(xué)。
作者簡介
顧榮 博士,南京大學(xué)計算機系副研究員,Fluid 開源項目 co-founder、Alluxio 開源項目 PMC 成員,研究方向大數(shù)據(jù)處理系統(tǒng),已在 TPDS、ICDE、JPDC、IPDPS、ICPP 等領(lǐng)域前沿期刊會議發(fā)表論文30余篇,主持國家自然科學(xué)基金面上項目/青年項目、中國博士后科學(xué)基金特別資助項目多項,研究成果落地應(yīng)用于阿里巴巴、百度、字節(jié)跳動、中國石化、華泰證券等公司和開源項目 Apache Spark、Alluxio,獲 2018 年度江蘇省科學(xué)技術(shù)一等獎、2019 年度江蘇省計算機學(xué)會青年科技獎,擔任中國計算機學(xué)會系統(tǒng)軟件專委會委員/大數(shù)據(jù)專委會通訊委員、江蘇省計算機學(xué)會大數(shù)據(jù)專委會秘書長。
原文鏈接:https://developer.aliyun.com/article/782917?
版權(quán)聲明:本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻,版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識產(chǎn)權(quán)保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的Fluid 0.5 版本:开启数据集缓存在线弹性扩缩容之路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 客户端突如其来的“白屏”等待该如何解决?
- 下一篇: 用 RTC 打造一个音乐教育 App,需