天天看點

Fluid 0.6 版本釋出:資料感覺的Pod排程與資料集自動彈性擴縮容資料感覺到 Pod 排程優化豐富資料集操作功能緩存引擎新增與增強總結

作者 | 顧榮  Fluid開源社群主席  南京大學PASALab

Fluid 是 CNCF 基金會旗下雲原生環境中資料密集型應用的高效支撐平台,由南京大學、阿裡雲雲原生團隊以及 Alluxio 開源社群聯合發起。項目自開源釋出以來吸引了衆多相關方向領域專家和工程師的關注,在大家的積極回報下社群不斷演進。近期 Fluid 0.6 版本正式釋出,在該版本中,Fluid 主要新增改善以下三個方面内容:

  • 資料感覺的Pod排程,支援資料與應用協同排程,加強生态融合, 适配更多開源排程器。
  • 豐富資料集操作功能,支援資料集自動彈性擴縮容、挂載點動态更新。
  • 緩存引擎新增與增強,支援緩存引擎高可用并新增公有雲緩存引擎。

Fluid 開源項目位址:

https://github.com/fluid-cloudnative/fluid

Fluid 項目全新官網:

https://fluid-cloudnative.github.io/

這三大主要功能的開發需求來自衆多社群使用者的實際生産回報,此外 Fluid v0.6 還進行了一些 bug 修複和文檔更新,歡迎使用體驗 Fluid v0.6!

Fluid v0.6 下載下傳連結:

https://github.com/fluid-cloudnative/fluid/releases

下文是本次新版本釋出功能的進一步介紹。

資料感覺到 Pod 排程優化

Fluid 一直緻力于利用雲原生資源排程能力滿足雲上資料密集應用高效運作的需求。在上個版本 Fluid v0.5 中,我們已經針對資料集編排缺乏架構感覺的問題,在資料集編排排程方面進行了一系列優化。在 Fluid v0.6 中,我們進一步針對容器編排缺乏資料感覺的問題,設計實作了對 Pod 排程的優化。

我們目前考慮到的優化場景問題包括:

  • 使用非 K8s 原生排程器時,不能與 Fluid 很好的相容
  • 使用資料集的 Pod 排程時,缺少考慮緩存分布考慮
  • 不使用資料集的 Pod,可能排程到有緩存的節點,影響其它 Pod 使用緩存

我們根據資料集緩存位置資訊制定 Pod 排程政策,通過 webhook 機制将生成的排程資訊注入到 Pod,最終實作了以下功能:

  • 在預設 Fuse 模式(Fuse 和緩存引擎同節點部署)下,支援 K8s 原生排程器,以及 Volcano,Yunikorn 等第三方排程器,實作 Pod 資料親和性排程
  • 在全局 Fuse 模式下,将 Pod 優先排程到有資料緩存能力的節點
  • 當 Pod 不使用資料集時,盡量避免将 Pod 排程到有緩存的節點

關于 Pod 排程優化功能的開啟與配置方式,請參考 Github 上的

示例文檔

豐富資料集操作功能

1. 資料集線上彈性緩存擴縮容

Fluid v0.5 開啟了線上彈性擴縮容之路,當時提供了線上手動擴縮容的能力。然而,在真實的生産環境中,手工操作擴縮具有較大的複雜度和延遲性。自動彈性伸縮是 Kubernetes 的核心能力之一,此前一直是圍繞這無狀态的應用負載展開。現在,有狀态的資料密集型應用也可以利用 Fluid 提供的分布式緩存的彈性伸縮能力,進而實作靈活擴充和收縮資料緩存。Fluid 基于 Runtime 提供了緩存空間、現有緩存比例等性能名額, 結合自身對于 Runtime 資源的擴縮容能力,進而達到資料緩存按需伸縮能力。

進一步,我們發現根據資料緩存量比例觸發自動的資料緩存能力彈性擴縮容具有非常多的優勢,但也有一個缺陷,就是需要根據資源壓力計算出合理的值後調整,這就存在一定的程度滞後性。是以 Fluid v0.6 通過結合 CronHPA 提供了定時擴縮容的能力,進而根據應用自身使用資料的時間特點,實作資料緩存的按時擴縮容,充分利用了叢集計算和存儲資源加速應用的資料通路性能。目前,使用自動擴容+定時縮容可以最大化的使 Fluid 平台在 K8s 叢集内變成一種可控的彈性緩存資源。目前,Fluid 的 Alluxio Runtime 在這方面提供了完整的支援。

2. 資料集挂載點動态更新功能

在 Fluid 的每個資料集中,都聲明了若幹挂載點(mountPoint)。例如,如下名為 test 的資料集中,聲明了 hbase 和 spark 兩個挂載點:

apiVersion: data.fluid.io/v1alpha1kind: Datasetmetadata:name: testspec:mounts:    - mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/       name: hbase- mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/spark/       name: spark      

之前的版本中,隻有資料集建立時,才會把資料集中聲明的那些挂載點挂載到虛拟檔案系統中。一旦資料集建立完成,即使再修改挂載點也不會生效,若要修改則隻能删除重建,這在實際使用中具有很多不便。在 Fluid v0.6中,我們新增了資料集挂載點動态增減功能。一旦修改資料集的挂載點,資料集将暫時進入 Updating 狀态。直到挂載/解除安裝完成,資料集才會重新回到 Bound 狀态。

緩存引擎新增與增強

1. 新增資料緩存引擎實作

Fluid 預設使用的分布式緩存 Runtime 是 AlluxioRuntime,為了滿足不同環境使用者對緩存系統的需求,在之前的版本中 Fluid 已經将分布式緩存 Runtime 接入架構設計成了可插拔的架構。在 Fluid v0.6中,來自騰訊雲的社群貢獻者基于該架構開發了 GooseFSRuntime,新增了一種支撐 Fluid Dataset 資料管理和緩存的執行引擎實作。

2. 資料緩存引擎高可用運作時

Fluid 目前支援的緩存引擎 Alluxio、JindoFS、GooseFS 均為分布式檔案系統,Alluxio、GooseFS 、JindoFS Cache 模式均為 Master-Worker 架構。在分布式檔案系統中,高可用性包含兩個方面:一是整個檔案系統的可用性,二是資料的完整和一緻性。Master 作為全局中繼資料管理元件,通過 Master High-Availability 保證檔案系統的高可用;通過 Raft 算法實作選主、狀态機同步等操作保證日志和中繼資料的完整和一緻性。在 Fluid v0.6中,來自騰訊雲的社群貢獻者設計實作高可用運作時功能,使用者隻需要指定期望 master 個數,如果個數為大于1的奇數,将自動使用高可用模式。

總結

Fluid v0.6 主要解決和滿足社群使用者在實際生産環境中回報的問題和需求。在排程方面,支援資料感覺的Pod排程,進而滿足多場景資料與應用協同排程的需求。在資料集操作方面,進一步豐富了相關功能,支援資料集自動彈性擴縮容、挂載點動态更新。在緩存引擎方面,進行新增緩存引擎新增并增強功能,支援了緩存引擎高可用并新增公有雲緩存引擎。 

了解更多:

Fluid 0.6 版本釋出:資料感覺的Pod排程與資料集自動彈性擴縮容資料感覺到 Pod 排程優化豐富資料集操作功能緩存引擎新增與增強總結

鳴謝

Fluid v0.6的開發得到了諸多機關的貢獻,這裡列出本版本提供的幾個重要功能的開發者的名字,感謝他們的付出貢獻!

● 楊麗(北京奇虎科技有限公司)資料集挂載點動态更新功能;

● 仇伶玮(中國電信)資料緩存感覺的Pod排程優化;

● 謝遠東(騰訊雲)緩存引擎高可用性、GooseFSRuntime支援;

作者簡介

顧榮 博士,南京大學計算機系副研究員,Fluid 開源社群主席、Alluxio 開源項目 PMC 成員,研究方向大資料處理系統,已在 TPDS、ICDE、JPDC、IPDPS、ICPP 等領域前沿期刊會議發表論文30餘篇,主持國家自然科學基金面上項目/青年項目、中國博士後科學基金特别資助項目多項,研究成果落地應用于阿裡巴巴、百度、位元組跳動、中國石化、華泰證券等公司和開源項目 Apache Spark、Alluxio,獲 2018 年度江蘇省科學技術一等獎、2019 年度江蘇省計算機學會青年科技獎、騰訊雲最具價值專家獎項,擔任中國計算機學會系統軟體專委會委員/大資料專委會通訊委員、江蘇省計算機學會大資料專委會秘書長。