隨着網絡性能提高,雲端計算架構逐步向存算分離轉變,AWS Aurora 率先在數據庫領域實現了這個轉變,大數據計算領域也迅速朝此方向演化。java
存算分離在雲端有明顯優點,不但能夠充分發揮彈性計算的靈活,同時集中的託管存儲能夠提供更大的容量和更低的成本,避免了雲端大量自建存儲集羣的維護代價。node
1、問題和挑戰數據庫
對象存儲是普遍使用的雲端非結構化數據存儲解決方案,愈來愈多的非結構化數據彙集於對象存儲的數據湖中,隨之而來的是對這些海量數據的分析需求。緩存
然而對大數據分析的存儲系統來講,HDFS 接口是事實標準,HDFS 是大數據生態的存儲基石。網絡
原生的對象存儲接口不兼容 HDFS,沒法直接使用。爲支持計算存儲分離的大數據場景,對象存儲一般提供了一個模擬層,實現 HDFS 語義到對象存儲語義的轉換,典型實現相似 s3n 和 cosn。然而這類實現缺少對真正的文件系統接口的支持,基於對象存儲的扁平目錄結構沒法實現分層命名空間,在處理相似 rename 等操做時效率極低(實際是基於前綴複製關聯的全部對象),對於 list、head 等頻繁元數據操做的場景延遲較高,一些對象存儲系統還缺乏強一致性語義,不能保證寫後讀一致性,致使上層的大數據計算框架出錯。
架構
同時在數據流方面,諸如常見的文件 append 操做,s3n 和 cosn 等對象存儲的模擬層也沒法支持。併發
爲支持大數據存算分離場景,須要從新設計雲端存儲系統,該系統能夠爲雲端大數據計算提供高效可靠的存儲基石,在實現無限存儲的同時,重點知足對元數據的需求。app
爲此,咱們提出了一種基於對象存儲的通用分佈式文件系統設計方案:cloud native hdfs,簡稱 CHDFS。框架
2、CHDFS 總體介紹分佈式
CHDFS 總體架構如圖所示。
CHDFS,在對象存儲之上,充分發揮雲端優點,構建可擴展的 metadata 層,實現對 HDFS 語義的支持。經過高度優化的 metadata 層,能夠支持海量元數據的高效訪問。在元數據規模遠超 HDFS 的狀況下,達到接近原生 HDFS 性能的效果。同時提供優化了讀寫數據流的 java 客戶端,在支持高效元數據操做的同時,充分發揮了對象存儲高吞吐和低成本的優勢。
CHDFS 基於對象存儲實現文件系統語義,數據託管給對象存儲,把對象存儲當作磁盤使用,在此基礎上構建文件系統分佈式元數據層,支持海量數據。基於對象存儲託管數據,能夠自動得到對象存儲的優點,如低成本,高可靠,大吞吐,高可用等特性,容量可達到百 PB 級別。
3、CHDFS 元數據服務特色
CHDFS 元數據服務採用分佈式架構,在元數據讀寫方面作了較多優化,支持百億級別的文件數據量,突破了 hdfs namenode 規模限制,同時保證了嚴格的強一致語義。
對比 COS 和 HDFS,具備如下特色:
CHDFS 提供了多種元數據引擎,在面臨不一樣的應用場景時,用戶能夠有多種選擇,達到成本、容量和性能的平衡。
在接口上,CHDFS 徹底兼容 HDFS,能夠輕鬆在兩個系統之間遷移數據。
4、COS 爲 CHDFS 提供數據底座
對象存儲 COS 做爲雲端基礎存儲服務,爲 CHDFS 提供了堅實的數據底座,CHDFS 的文件數據分塊後存儲在 COS,具備如下優勢:
同時,CHDFS 提供了高性能的 HDFS 兼容的 java sdk,針對大數據場景作了全面優化,實現了高效的讀寫緩存機制,能夠充分發揮 COS 在數據流方面的優點。
5、豐富的產品功能
除了上述提到的強大的文件讀寫能力外,CHDFS 還提供了豐富的產品功能,來知足大數據場景下客戶的多樣需求。
對於關注成本優化的客戶,CHDFS 提供了存儲生命週期管理功能,可以經過簡單的配置頁面,讓客戶的文件自動沉降到成本更低的存儲介質,進一步下降客戶使用雲端存儲的成本,真真正正的幫助客戶省錢。當客戶須要訪問這部分沉降的冷數據時,CHDFS 提供了功能強大、方便易用的命令行工具,使文件回到熱存儲層供客戶使用。
對於有存儲內容感知需求的客戶,CHDFS 提供了強大的文件清單功能,能夠按照客戶指定的文件格式及過濾字段,離線導出文件信息,而且投遞到客戶的文件系統中。客戶能夠經過讀取該清單文件,進行多維度的業務文件屬性分析,如文件平均大小分佈等。甚至還能夠做爲客戶從本地 HDFS 導入 CHDFS 過程當中的一種文件校驗手段。
6、生態整合
CHDFS 提供了徹底兼容 HDFS 的協議,能夠無縫支持常見的大數據計算框架,如 Hive,Spark,Presto,Flink 等。
CHDFS 目前已經和騰訊雲 EMR 產品緊密集合。客戶購買 CHDFS 產品後,無需安裝任何環境,便可直接在騰訊雲 EMR 上使用 CHDFS 產品,進一步簡化客戶使用 CHDFS 的上手成本。