聽說你想把對象存儲當 HDFS 用,我們這裡有個方案...
傳統的大數據集群往往採用本地中心化的計算和存儲集群。比如在Google早期的【三駕馬車】中,使用 GFS 進行海量網頁數據存儲,用 BigTable 作為資料庫並為上層提供各種數據發現的能力,同時用 MapReduce 進行大規模數據處理。
但隨著互聯網業務的發展,本地中心化的架構開始受到以下兩個方面的挑戰:
-
數據增長越來越快,並且數據格式更加豐富多樣,非結構化數據越來越多。傳統的分散式存儲引擎難以大規模存儲和處理文本、音影片等非結構化數據。
-
計算和存儲強耦合在本地應用上,缺少彈性。強耦合的模式增加了企業成本,因為需要為計算或者存儲的峰值需求準備資源。
在大約2015年之後,由於對象存儲具有極高的數據持久性,跨地域的容災以及低成本等優勢,AWS S3 等公有雲對象存儲服務逐漸替代了 HDFS,成為越來越多企業的海量分散式存儲引擎。
儘管對象存儲可以提供低成本的海量分散式存儲,支援結構化、半結構化、非結構化數據的存儲,由於對象存儲和文件系統在元數據組織方式上的差異,導致原生的對象存儲在傳統文件系統元數據操作如 List 和 Rename 等操作上的性能差距較大。而在大數據場景下,整個MapReduce 過程中往往會產生大量的 List 和 Rename 操作,相比原生的 HDFS,在大數據分析效能會有明顯的性能損失。
為了滿足客戶基於對象存儲的大數據分析的性能要求,騰訊雲對象存儲基於雲 HDFS 的產品能力,推出了元數據加速特性,賦予對象存儲以高性能的文件系統能力。用戶只需要在創建存儲桶時開啟元數據加速能力,即可使用文件系統語義訪問對象存儲,將對象存儲的適用範圍擴寬到大數據、高性能計算、機器學習,AI等場景。
元數據加速能力
對象存儲的文件元數據資訊(比如文件名,文件的分塊資訊,文件分塊所處的伺服器資訊等)存儲在索引庫表中。按照當前主流公有雲對象存儲的設計,會按照字典序返迴文件索引資訊;加上索引資訊存儲在 SSD 盤上,拉取索引資訊的性能會受限於 SSD 盤單進程限制,因此每個存儲桶的 List QPS 很難達到較高的數值。而原生對象存儲中, Rename 操作實際上對應著一次文件 Copy 操作和一次 Delete 操作,MapReduce 過程中會存在大量 Rename 操作的性能並不高。
針對這些問題,一個直觀的解決方案是將元數據管理單獨剖離出來,為上層計算業務提供兼容HDFS 文件系統語義的訪問能力,這就是對象存儲的元數據加速能力。
下圖展示了元數據加速能力的一個簡要示意圖。區別於普通的對象存儲,啟用了元數據加速能力後,元數據相關的操作會路由到元數據加速層進行處理。

有了元數據加速能力的加持,就可以直接將對象存儲當做 HDFS 用,用文件系統語義來訪問對象存儲服務。一方面,這一能力極大地提升了 List 等大數據文件系統操作的性能;另一方面,也提供了 Rename、Truncate等典型的文件系統操作指令,提供了大數據生態兼容支援。
如何使用
您可以在控制台上非常便捷地為存儲桶配置元數據加速能力。如下圖所示,您可以在對象存儲創建存儲桶時開啟元數據加速能力。

開啟元數據加速能力後,可以通過控制台、SDK 、 API 或者 COSN 工具等方式上傳文件(PutObject)、創建文件夾(CreateObject)、重命名文件(RenameObject)、追加寫文件(AppendObject)或者截斷文件(TruncateObject)等操作。

性能表現
上文提到元數據加速能力能夠極大提升文件 List 和 Rename 等文件系統操作的性能。這一章節我們詳細介紹具體的性能表現情況。
我們使用 GooseFS 建立兩個不同的命名空間,分別對接開啟了元數據加速能力和未開啟元數據加速能力的存儲桶,分別 ls 和 ls -R 不同數量級的文件。本次測試主要驗證元數據操作性能,因此文件大小統一設置為 0 B。每組測試會多次測試取均值,主要評估指標為總延遲均值。
詳細的測試數據如下:
| 元數據數量 | 指令類型 | 開啟元數據加速能力 | 未開啟元數據加速能力 |
|---|---|---|---|
| 5W | ls | 4.359s | 10.354s |
| 100W | ls | 7.065s | 21.376s |
| 50W | ls -R | 4.359s | 10.354s |
| 50W | ls -R | 7.065s | 21.376s |
可以看到,相比起普通的對象存儲服務,元數據加速能力可以至少一倍的 List 請求性能。
而在 Rename 性能上,我們採用了同樣的方式,多次重命名一個有 1000 個 100 KB 文件的目錄, Rename 延遲測試數據如下:
| 測試次數 | 開啟元數據加速能力 | 未開啟元數據加速能力 |
|---|---|---|
| 1 | 1.016s | 30.323s |
| 2 | 1.018s | 29.789s |
| 3 | 1.011s | 30.934s |
可以看到,相比起普通的對象存儲服務,元數據加速能力可以數十倍地降低 Rename 請求延遲。
寫在最後
元數據加速能力拓寬了對象存儲服務的使用場景,在底層採用了雲 HDFS 卓越的元數據管理功能,支援用戶通過文件系統語義訪問對象存儲服務,系統設計指標可以達到2.4Gb/s頻寬、10萬級 QPS 以及 ms 級延遲。存儲桶在開啟元數據加速功能後,可以廣泛應用於大數據、高性能計算、機器學習、AI 等場景。
當前功能為公測能力,如需體驗請加入對象存儲服務群,聯繫我們開啟。

