星環科技分散式檔案系統TDFS大揭祕(上)

星環科技 發表於 2021-12-06

星環科技是一家致力於打造企業級大資料基礎軟體,圍繞資料全生命週期為企業提供基礎軟體及支援的廠商。在這個資料驅動的數字化世界中,來自社交媒體、金融科技等不同領域的資料正在大幅度增長,例如大量商業報告、網頁、影像和音視訊等。如今,接近80%的資料都是非結構化的。不同於結構化半結構化資料的良好結構,儲存和處理如此龐大的非結構化資料集正在成為傳統計算技術的挑戰。


本文將著重介紹星環科技新推出的一款致力於打造 高效能、高可靠、高可用、強一致分散式檔案系統TDFS。

從HDFS說起:

HDFS是Hadoop非常重要的核心之一。其旨在通過計算機叢集在分散式環境中有效地儲存和處理大批量檔案,有效地解決大規模、海量資料的儲存以及讀寫效能的問題,並確保了裝置的穩定性。HDFS常常用於在Hadoop生態體系內提供分散式檔案讀寫服務,是Hadoop生態系統中使用最為廣泛的元件。

HDFS有以下的 設計目標:



●高可靠性,可以防止伺服器出現故障當機所導致的資料丟失等問題;

●相比較磁碟陣列構建成本低,可構建在廉價x86伺服器上;

●將大檔案切成Block,支援GB-TB級別海量資料儲存;

●支援大規模離線批處理,利用資料本地性提速計算過程。

雖然HDFS有效解決了使用者大檔案儲存等問題,但在處理大量小檔案時效能下降滯後。並且其本身設計也存在一些缺陷,例如 NameNode的單點效能瓶頸,NameNode高可用過程中寫放大嚴重,無法儲存大量小檔案等問題。

以下是HDFS的簡易架構圖:

星環科技分散式檔案系統TDFS大揭祕(上)


從整個系統架構上看,NameNode扮演著十分重要的角色,其一大功能是負責進行 後設資料的儲存與管理。其中後設資料資訊包括檔名、路徑、檔案所有者、副本數等。


NameNode通常將後設資料熱載入至記憶體中,但是隨著資料規模和叢集規模的持續增長,逐漸出現 記憶體受限的問題,並且很多儲存小檔案時被隱藏的問題被暴露出來,比如 啟動時間變長。NameNode的啟動過程通常分為幾個階段,包括fsimage本地資料載入、讀取JournalNode上比fsimage新的editlog、在本地進行editlog replay、DataNode的BlockReport。

隨著資料規模的增長,現場經常出現需要replay的editlog非常多的情況,在replay完成之前,NameNode將一直處於Safemode狀態。在該狀態下 無法對外提供服務,並且處理來自DataNode的BlockReport階段的時長會同步增加。最後只有當DataNode訊息中上報的block個數達到NameNode所需的99.99%後,NameNode才會退出Safemode狀態,並開始對外提供服務,整體啟動過程將 十分耗時。並且,Block數量龐大時,BlockReport請求也有可能導致NameNode長時間卡頓。

除此之外,由於有關後設資料的管理處理等操作基本都是基於NameNode來進行,那麼當記憶體被大量佔用時,對於後設資料的增刪改查的操作效能會出現 下降的趨勢,相對於更復雜的操作處理,比如RPC (Remote Procedure Call) 請求的 效能下降趨勢將會更加明顯。

HDFS為了實現高可用,需要額外引入 Zookeeper,JournalNode ,ZKFC,Standby NameNode,但是引入額外服務的同時也會因此引入 其他問題。這裡比較嚴重的問題是一次檔案系統後設資料的操作將會被同步到至少5個不同的副本當中(JournalNode3份,NameNode2份),如果每個程式配置了兩個目錄,那麼這個情況還會進一步惡化。另外,多個職能不同但是互相依賴的程式也給 運維,特別是 故障定位製造了很大的麻煩。

星環科技分散式檔案系統TDFS大揭祕(上)


此外,NameNode記憶體使用和後設資料量正相關。在較大的叢集中,NameNode中所儲存的後設資料量通常十分龐大。然而,單個NameNode可支撐的 檔案數量以及吞吐量十分有限。儘管可以通過採取小檔案合併或資料壓縮等手段減少所儲存的後設資料量,但隨著叢集規模和業務的不斷髮展,壓力都集中在單個NameNode上(如下圖所示),導致 系統瓶頸,無法具備高可用。並且,當後設資料量達到了NameNode的上限時,則需要不斷的刪除舊的資料來維持現有的儲存量。CMS(concurrent mark sweep) GC頻率也將會越來越高,甚至可能會由於過程中檔案過大而空間不足以存放所導致的promotion fail,從而觸發FullGC,極易 誘發系統內部工作執行緒卡頓等問題, 風險將不可控。


星環科技分散式檔案系統TDFS大揭祕(上)


因此,當總後設資料量超過單個NameNode可支撐的上限時,系統則需改用 Federation的方式來維護,即 增加機器。


星環科技分散式檔案系統TDFS大揭祕(上)


儘管這樣的機制可以解決當前後設資料儲存量有限的問題,但是兩套NameNode之間相互獨立 互不相通,其中NameNode後設資料以及DataNode塊檔案 無法進行共享,如果出現業務需要訪問所有資料的情況,那麼則需要 根據業務來進行拆分,改造過程會十分麻煩。拆分過程需要使用DistCP將資料進行完整的拷貝, 儲存成本將會非常高,而且進行 讀寫備份的過程十分繁瑣,整體 效率也會大大降低。並且,使用了Federation之後,路徑需要使用ViewFs的方式來訪問,基本上所有需要訪問HDFS的 業務程式碼都有可能需要進行相應的改造。比如原來要訪問HDFS的/path/to/abc.log,現在要改成viewfs://path/to/abc.log,或者hdfs://nameservice1/path/to/abc.log。


雖然在這個機制下NameNode以及NameSpace存在多個,但是其中單一的NameNode以及NameSpace仍然存在 單點故障。如果其中一個NameNode出現 故障當機,那麼其檔案系統 所管理的後設資料將無法訪問。

TDFS的誕生

基於前文中提到的業務方面的瓶頸,星環科技推出了TDFS -- 一個雲原生,相容 Hadoop 及更多生態,支援物件儲存、檔案系統,致力於打造高效能、強一致的分散式儲存系統,其充分具備高擴充套件性、低成本、高可靠和高可用等特性。

為什麼需要TDFS

TDFS提供了對以上問題的解法。TDFS 1.0是 Rust編寫的新一代分散式檔案系統,支援了分散式檔案系統(Distributed File System)和物件儲存系統(Object Storage)兩個系統的特性。同時TDFS的後設資料管理採用了新的 分散式一致性協議,簡化了後設資料儲存的架構的同時也減少了後設資料Editlog的複製份數。TDFS採用了全新的 後設資料儲存 資料結構記憶體中可以存放10倍於HDFS元資訊資料的同時,還可以將較冷的後設資料資訊識別並利用硬碟進行存放,有效解決檔案儲存數量因為記憶體不足受到的限制。

以下是TDFS支援的主要核心能力:

海量儲存— TDFS提供無上限檔案後設資料儲存,無單點瓶頸。充分滿足客戶海量大資料儲存與分析的需求的同時可以有效提高資源利用率,確保資料高可用。

安全可靠— 基於分散式架構技術,TDFS提供資料多副本冗餘儲存,確保資料的永續性以及服務的可用性。

資料管理 — TDFS提供檔案目錄結構,支援資料批量匯入和匯出的時候以檔案形式進行資料交換。

相容生態— 基於分散式儲存架構,TDFS 在通訊協議上相容 HDFS 協議,可直接替換 NameNode,支援對TDH的熱升級,相容Hadoop生態。

穩定性 — 由Native語言編寫,效能平滑,沒有GC帶來的突發性效能波動。

高效能 — TDFS支援使用者快速的進行建立目錄、目錄存取,檢索、檢視目錄下的統計資訊及進行許可權管理等操作。此外,TDFS有著更高的併發度,單個儲存物件的操作也更快。


星環科技分散式檔案系統TDFS大揭祕(上)


TDFS全方位滿足了企業對儲存效能、容錯性、服務成本等多方面的需求,有效適用於對海量資料進行 儲存實時計算、即時查詢、綜合檢索和資料分析等主流業務場景,在海量大資料的儲存、查詢和計算中作為資料來源以支援滿足不同的大資料計算與儲存分析場景需求。

關於TDFS是如何實現這些功能的,我們將會在 《星環科技分散式檔案系統TDFS大揭祕(下)》中進行深入剖析。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994106/viewspace-2846067/,如需轉載,請註明出處,否則將追究法律責任。