大數據

Fluid: 讓大數據和 AI 擁抱雲原生的一塊重要拼圖

image.png

得益於容器化帶來的高效部署、敏捷迭代,以及雲計算在資源成本和彈性擴展方面的天然優勢,以Kubernetes為代表的雲原生編排框架吸引著越來越多的AI與大數據應用在其上部署和運行。然而,雲原生計算基金會(CNCF)全景圖中一直缺失一款原生組件,以幫助這些數據密集型應用在雲原生場景下高效、安全、便捷地訪問數據。

如何驅動大數據、AI應用在雲原生場景下高效運行是一個既有理論意義又具應用價值的重要挑戰性問題。一方面,解決該問題需考慮複雜場景下應用協同編排、調度優化、數據緩存等一系列理論與技術難題。另一方面,該問題的解決能夠有力地推動廣闊雲服務場景下的大數據、AI落地應用。為系統化解決相關問題,學術界和工業界密切合作,南京大學PASALab副研究員顧榮博士、阿里雲容器服務高級技術專家車漾、Alluxio項目創始成員範斌博士聯合推動發起了Fluid開源合作項目

Fluid是什麼

Fluid是一款開源的雲原生基礎架構項目。在計算和存儲分離的大背景驅動下,Fluid的目標是為AI與大數據雲原生應用提供一層高效便捷的數據抽象,將數據從存儲抽象出來,以便達到:

  1. 通過數據親和性調度分佈式緩存引擎加速,實現數據和計算之間的融合,從而加速計算對數據的訪問。
  2. 將數據獨立於存儲進行管理,並且通過Kubernetes的命名空間進行資源隔離,實現數據的安全隔離。
  3. 將來自不同存儲的數據聯合起來進行運算,從而有機會打破不同存儲的差異性帶來的數據孤島效應。

通過Kubernetes服務提供的數據層抽象,可以讓數據像流體一樣在諸如HDFS、OSS、Ceph等存儲源和Kubernetes上層雲原生應用計算之間靈活高效地移動、複製、驅逐、轉換和管理。而具體數據操作對用戶透明,用戶不必再擔心訪問遠端數據的效率、管理數據源的便捷性,以及如何幫助Kuberntes做出運維調度決策等問題。用戶只需以最自然的Kubernetes原生數據卷方式直接訪問抽象出來的數據,剩餘任務和底層細節全部交給Fluid處理。

Fluid項目當前主要關注數據集編排和應用編排這兩個重要場景。數據集編排可以將指定數據集的數據緩存到指定特性的Kubernetes節點;而應用編排將指定該應用調度到可以或已經存儲了指定數據集的節點上。這兩者還可以組合形成協同編排場景,即協同考慮數據集和應用需求進行節點資源調度。

為什麼雲原生需要Fluid

雲原生環境與更早出現的大數據處理框架在設計理念和機制上存在天然分歧。深受Google三篇論文GFS、MapReduce、BigTable影響的Hadoop大數據生態,從誕生之初即信奉和實踐“移動計算而不是數據”的理念。因此以Spark,Hive,MapReduce為代表的數據密集型計算框架及其應用為減少數據傳輸,其設計更多地考慮數據本地化架構。但隨著時代的變遷,為兼顧資源擴展的靈活性與使用成本,計算和存儲分離的架構在更新興的雲原生環境中大行其道。因此雲原生環境裡需要類似Fluid這樣的一款組件來補充大數據框架擁抱雲原生帶來的數據本地性缺失。

此外,在雲原生環境中,應用通常以無狀態(Stateless)微服務化方式部署,並不以數據處理為中心;而數據密集型框架和應用通常以數據抽象為中心,開展相關計算作業和任務的分配執行。當數據密集型框架融入雲原生環境後,也需要像Fluid這樣以數據抽象為中心的調度和分配框架來協同工作。

針對Kubernetes缺乏對應用數據的智能感知和調度優化,以及以Alluxio為例的數據編排引擎存在難以直接管控雲原生基礎架構層的侷限,Fluid提出數據應用協同編排、智能感知、聯合優化等一系列創新方法,並且形成一套雲原生場景下數據密集型應用的高效支撐平臺。**
具體的架構參見下圖:
image.png

演示

我們提供了視頻的Demo,為您展示如何通過Fluid提升雲上AI模型訓練的速度。在這個Demo中,使用同樣的ResNet50測試代碼,Fluid加速和原生的ossfs直接訪問相比,不論在每秒鐘的訓練速度,和訓練總時長相比都有明顯的優勢,訓練耗時縮短了69%。

image.png
視頻Demo

快速體驗Fluid

Fluid需要運行在Kubernetes v1.14 及以上版本,並且需要支持CSI存儲。Fluid Operator的部署和管理是通過 Kubernetes 平臺上的包管理工具 Helm v3實現的。運行 Fluid前請確保 Helm已經正確安裝在 Kubernetes集群裡。 你可以參照文檔,安裝和使用Fluid。

歡迎加入與反饋

Fluid讓Kubernetes真正具有分佈式數據緩存的基礎能力,開源只是一個起點,需要大家的共同參與。大家在使用過程發現 bug 或需要的feature,都可以直接在 GitHub 上面提 issue 或 PR,一起參與討論。另外我們有一個釘釘群,歡迎您的參與和討論。

作者簡介

顧榮  南京大學計算機系副研究員,研究方向大數據處理系統,已在TPDS、ICDE、Parallel Computing、JPDC、IPDPS、ICPP等領域前沿期刊會議發表論文20餘篇,成果落地應用於中國石化、百度、字節跳動等公司和開源項目Apache Spark,獲2018年度江蘇省科學技術一等獎、2019年度江蘇省計算機學會青年科技獎,當選中國計算機學會系統軟件專委會委員/大數據專委會通訊委員、江蘇省計算機學會大數據專委會祕書長;

車漾  阿里雲高級技術專家,從事 Kubernetes 和容器相關產品的開發。尤其關注利用雲原生技術構建機器學習平臺系統,是GPU 共享調度的主要作者和維護者;

範斌 Alluxio開源項目的管理委員會成員(PMC Member)和源碼維護者(Maintianer)。加入Alluxio項目之前, 範斌就職於谷歌, 從事下一代大規模分佈式存儲系統的研究與開發。他於2013年獲得卡內基梅隆大學(Carnegie Mellon University)計算機系博士學位,博士期間從事分佈式系統的設計與實現,是Cuckoo Filter的作者。

Leave a Reply

Your email address will not be published. Required fields are marked *