計算存儲分離是雲計算的一種發展趨勢,傳統的計算存儲相互融合的的架構存在必定的問題, 好比在集羣擴容的時候存在計算能力和存儲能力相互不匹配的問題,用戶在某些狀況下只須要擴容計算能力或者存儲能力,傳統的融合架構不能單獨的擴充計算或者存儲能力, 而計算存儲分離能夠很好的解決這個問題,用戶只須要關心整個集羣的計算能力。數據庫
EMR 現有的計算存儲分離方案是基於OSS提供兼容Hadoop文件系統的OssFS, 用戶經過OssFS 能夠訪問OSS 上的數據, 所以OssFS 保留了OSS的一些優點,好比提供海量存儲,成本低,高可靠等,同時也存在一些問題好比文件重命名操做慢, OSS 帶寬限制,高頻訪問的數據消耗過多的OSS帶寬。而JindoFS 除了能夠保留上述OssFS的優點,還克服上述OssFS的問題。後端
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的分析框架
Block模式將JindoFS的文件切分的Block的形式存放本地磁盤以及OSS上,用戶經過OSS 只能看到Block的數據,本地的Namespace服務負責管理元數據,經過本地元數據以及Block數據構建出文件數據,該模式相對與後一種模式該模式下JindoFS的性能是最佳的, Block模式適用用戶對數據以及元數據都有必定的性能要求的場景,Block模式須要用戶將數據遷移到JindoFS。
Block模式爲用戶提供不一樣的存儲策略適配用戶不一樣的應用場景機器學習
對比HDFS, JindoFS的Block 模式提供如下優點:oop
Cache模式將JindoFS文件以對象的形式存在OSS,用戶能夠經過OSS 看到原有的目錄結構以及文件,該模式提供數據以及元數據的緩存加速用戶的讀寫數據的性能,該模式下用戶無需遷移數據到OSS,可是性能相對Block模式有必定的性能損失。 在元數據同步方面用戶能夠根據不一樣的需求選擇不一樣的元數據同步策略。性能
對比OssFS, JindoFS的Cache模式提供如下優點:學習
外部客戶端提供用戶在EMR 集羣外訪問 JindoFS的一種方式,現階段該客戶端只支持JindoFS的Block模式,客戶端的權限與OSS 權限綁定,用戶須要有相應OSS的權限纔可以經過外部客戶端訪問JindoFS的數據。
下面主要JindoFS + DCPM的性能,測試主要分爲三部分:Micro-benchmark, TPC-DS查詢在JindoFS上的性能以及 SSB在Spark Relational Cache + JindoFS 上的性能。 其中DCPM 爲Intel 傲騰數據中心級可持久化內存。
上圖爲Micro-benchmark的性能,主要測試了不一樣文件大小( 512K, 1M, 2M, 4M and 8M )和不一樣並行度(1-10)下的100個小文件讀操做,從圖中能夠看出DCPM爲小文件讀帶來了性能的顯著提升,文件越大,並行度越高,性能提高的也更明顯。
上圖TPC-DS的測試結果,TPC-DS數據量爲2TB,測試整個TPC-DS的99個查詢。基於歸一化時間,DCPM整體上帶來了1.53倍的性能提高。
上圖SSB在Spark Relational Cache + JindoFS 測試結果,其中SSB( 星型基準測試 )是基於TPC-H的針對星型數據庫系統性能的測試基準。Relational Cache是EMR Spark支持的一個重要特性,主要經過對數據進行預組織和預計算加速數據分析,提供了相似傳統數據倉庫物化視圖的功能。 在SSB測試中,使用1TB數據來單獨執行每一個查詢,並在每一個查詢之間清除系統cache。基於歸一化時間,整體上DCPM 能帶來2.7倍的性能提高。對於單個query,性能提高在1.9倍至3.4倍。
做者介紹:殳鑫鑫,花名辰石,阿里巴巴計算平臺事業部EMR團隊技術專家,目前從事大數據存儲以及Spark相關方面的工做。
阿里雲雙11領億元補貼,拼手氣抽iPhone 11 Pro、衛衣等好禮,點此參與:http://t.cn/Ai1hLLJT
本文做者:殳鑫鑫
本文爲雲棲社區原創內容,未經容許不得轉載。