天天看點

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

作者:殳鑫鑫,花名辰石,阿裡巴巴計算平台事業部EMR團隊技術專家,目前從事大資料存儲以及Spark相關方面的工作。

2019 年雲栖大會上,EMR Jindo 的技術存儲分離方案得到很大的關注,視訊直達連結

【雲上大資料的一種高性能資料湖存儲方案】 【EMR打造高效雲原生資料分析引擎】

JindoFS背景

計算存儲分離是雲計算的一種發展趨勢,傳統的計算存儲互相融合的的架構存在一定的問題, 比如在叢集擴容的時候存在計算能力和存儲能力互相不比對的問題,使用者在某些情況下隻需要擴容計算能力或者存儲能力,傳統的融合架構不能單獨的擴充計算或者存儲能力, 而計算存儲分離可以很好的解決這個問題,使用者隻需要關心整個叢集的計算能力。

基于OSS 計算存儲分離

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

EMR 現有的計算存儲分離方案是基于OSS提供相容Hadoop檔案系統的OssFS, 使用者通過OssFS 可以通路OSS 上的資料, 是以OssFS 保留了OSS的一些優勢,比如提供海量存儲,成本低,高可靠等,同時也存在一些問題比如檔案重命名操作慢, OSS 帶寬限制,高頻通路的資料消耗過多的OSS帶寬。而JindoFS 除了可以保留上述OssFS的優勢,還克服上述OssFS的問題。

JindoFS 介紹

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

JindoFS 主要包含兩個服務元件:Namespace的服務以及Storage 服務,Namespace服務主要JindoFS 中繼資料管理以及 Storage 服務的管理, Storage 服務主要負責 使用者資料的管理包含本地資料的管理和OSS上資料的管理, JindoFS是雲原生的檔案系統,可以提供本地存儲的性能以及OSS的超大容量。下面我們分别介紹下這兩個服務的主要功能。

Namespace 主要用來管理使用者的中繼資料,這部分中繼資料包含JindoFS 檔案系統的中繼資料, Block 的中繼資料以及 Storage 服務的中繼資料,JindoFS Namespace服務可以在單個叢集上支援不同的Namespace, 使用者可以根據不同的業務劃分不同的Namespace,不同的Namespace存放不同業務資料。 此外Namespace可以設定不同存儲後端現階段主要支援RocksDB,OTS的支援預計在下個版本釋出,針對Namespace的性能我們支援大量的優化,比如支援目錄級别的并發控制,中繼資料的緩存等等。

Storage 服務主要負責實際的資料管理,本地緩存的資料管理以及OSS資料管理,可以支援不同的存儲後端以及存儲媒體,存儲後端現階段主要支援本地檔案系統以及OSS, 本地存儲系統可以支援HDD/SSD/DCPM等存儲媒體,用以提供緩存加速,另外Storage 服務針對使用者的小檔案較多的場景進行優化,避免過多的小檔案給本地檔案系統帶來過大的壓力造成整體性能的下降。

此外在整個生态方面,JindoFS 支援EMR 架構的所有計算引擎,包括Hadoop, Hive, Spark, Flink, Impala, Presto 以及 HBase, 使用者隻要替換檔案通路路徑的模式為jfs就可以使用JindoFS,另外在機器學習方面下個版本JindoFS将會推出Python SDK, 友善機器學習使用者可以高效率的通路JindoFS上的資料,另外JindoFS 與 EMR Spark高度內建優化,支援基于Spark的物化視圖以及Cube的優化,實作秒級Adhoc的分析

JindoFS 使用模式

JindoFS Block模式

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

Block模式将JindoFS的檔案切分的Block的形式存放本地磁盤以及OSS上,使用者通過OSS 隻能看到Block的資料,本地的Namespace服務負責管理中繼資料,通過本地中繼資料以及Block資料建構出檔案資料,該模式相對與後一種模式該模式下JindoFS的性能是最佳的, Block模式适用使用者對資料以及中繼資料都有一定的性能要求的場景,Block模式需要使用者将資料遷移到JindoFS。

Block模式為使用者提供不同的存儲政策适配使用者不同的應用場景

政策名稱 政策描述 适用場景
COLD 資料隻有一份存放在OSS上 主要适用冷資料存儲的場景
WARM 預設政策,資料本地一份,OSS一份 本地資料提供性能加速
HOT 資料本地多份,OSS一份 針對熱資料提供進一步加速功能
TEMP 資料僅有本地一個備份 針對一些零時資料存儲場景

對比HDFS, JindoFS的Block 模式提供以下優勢:

  • 利用OSS 的廉價和無限容量 JindoFS 提可以 OSS 優勢成本以及容量的優勢
  • 冷熱資料自動分離,計算透明,冷熱資料自動遷移的時候邏輯位置不變,無須修改表中繼資料 location 資訊
  • 維護簡單,無須 decommission,節點壞掉或者下掉就去掉,資料 OSS 上有,不會丢失
  • 系統快速更新/重新開機/恢複,沒有 block report
  • 原生支援小檔案,避免小檔案過程造成檔案系統過大的壓力

JindoFS Cache模式

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

Cache模式将JindoFS檔案以對象的形式存在OSS,使用者可以通過OSS 看到原有的目錄結構以及檔案,該模式提供資料以及中繼資料的緩存加速使用者的讀寫資料的性能,該模式下使用者無需遷移資料到OSS,但是性能相對Block模式有一定的性能損失。 在中繼資料同步方面使用者可以根據不同的需求選擇不同的中繼資料同步政策。

對比OssFS, JindoFS的Cache模式提供以下優勢:

  • 由于本地備份存在,讀寫吞吐與HDFS相當
  • 能夠支援全部 HDFS 接口, 支援更多的場景,如Delta Lake,支援 HBase on JindoFS
  • JindoFS作為資料以及中繼資料的緩存, 使用者在讀寫資料以及List/Status操作相對OssFS有性能提升
  • JindoFS作為資料緩存, 可以加速使用者的資料讀寫

JindoFS 外部用戶端

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

外部用戶端提供使用者在EMR 叢集外通路 JindoFS的一種方式,現階段該用戶端隻支援JindoFS的Block模式,用戶端的權限與OSS 權限綁定,使用者需要有相應OSS的權限才能夠通過外部用戶端通路JindoFS的資料。

JindoFS + DCPM 性能

測試環境

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

性能

下面主要JindoFS + DCPM的性能,測試主要分為三部分:Micro-benchmark, TPC-DS查詢在JindoFS上的性能以及 SSB在Spark Relational Cache + JindoFS 上的性能。 其中DCPM 為Intel 傲騰資料中心級可持久化記憶體。

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

上圖為Micro-benchmark的性能,主要測試了不同檔案大小( 512K, 1M, 2M, 4M and 8M )和不同并行度(1-10)下的100個小檔案讀操作,從圖中可以看出DCPM為小檔案讀帶來了性能的顯著提高,檔案越大,并行度越高,性能提升的也更明顯。

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

上圖TPC-DS的測試結果,TPC-DS資料量為2TB,測試整個TPC-DS的99個查詢。基于歸一化時間,DCPM總體上帶來了1.53倍的性能提升。

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

上圖SSB在Spark Relational Cache + JindoFS 測試結果,其中SSB( 星型基準測試 )是基于TPC-H的針對星型資料庫系統性能的測試基準。Relational Cache是EMR Spark支援的一個重要特性,主要通過對資料進行預組織和預計算加速資料分析,提供了類似傳統資料倉庫物化視圖的功能。 在SSB測試中,使用1TB資料來單獨執行每個查詢,并在每個查詢之間清除系統cache。基于歸一化時間,總體上DCPM 能帶來2.7倍的性能提升。對于單個query,性能提升在1.9倍至3.4倍。

相關文章推薦:

【JindoFS概述:雲原生的大資料計算存儲分離方案】

後續我們也會在雲栖社群和釘釘群分享更多的 Jindo 技術幹貨,歡迎有興趣的同學加入 【Apache Spark技術交流社群】進行交流和技術分享。

JindoFS解析 - 雲上大資料高性能資料湖存儲方案

繼續閱讀