JindoFS是一種雲原生的檔案系統,結合OSS和本機存放區,成為E-MapReduce產品的新一代儲存系統,為上層計算提供了高效可靠的儲存。本文主要說明JindoFS的配置使用方式,以及介紹一些典型的應用情境。
概述
JindoFS提供了Block Storage模式(Block)和緩衝模式(Cache)的儲存模式。
JindoFS採用了本機存放區和OSS的異構多備份機制,Storage Service提供了資料存放區能力,首先使用OSS作為儲存後端,保證資料的高可靠性,同時利用本機存放區實現冗餘備份,利用本地的備份,可以加速資料讀取;另外,JindoFS的中繼資料通過本地服務Namespace Service管理,從而保證了中繼資料操作的效能(和HDFS中繼資料操作效能相似)。
-
E-MapReduce-3.20.0及以上版本支援Jindo FS,您可以在建立叢集時勾選相關服務來使用JindoFS。
-
本文主要是E-MapReduce-3.22.0及以上版本的介紹;E-MapReduce-3.20.0及以上版本至E-MapReduce-3.22.0(但不包括)版本的JindoFS使用說明,請參見SmartData使用說明(EMR-3.20.0~3.22.0版本)。

環境準備
-
建立叢集
選擇E-MapReduce-3.22.0及以上版本,勾選可選服務中的SmartData,建立叢集詳情請參見建立叢集。
-
配置叢集
SmartData提供的JindoFS檔案系統使用OSS作為儲存後端,因此在使用JindoFS之前需配置一些OSS相關參數。下面提供兩種配置方式,第一種是先建立好叢集,修改Bigboot相關參數,需重啟SmartData服務生效;第二種是建立叢集過程中添加自訂配置,這樣叢集建立好後相關服務就能按照自訂參數啟動:
-
叢集建立好後初始化參數
所有JindoFS相關配置都在Bigboot組件中,配置如下所示:
-
在服务配置頁面,單擊bigboot頁簽。
將 jfs.namespaces 的值設定為
test。 -
單擊自定义配置。在 新增配置項 對話方塊中,添加以下配置項:將
jfs.namespaces.test.uri設定為oss://oss-bucket/oss-dir,將jfs.namespaces.test.mode設定為block,並配置對應的 OSS AccessKey ID 和 AccessKey Secret,然後單擊 確定。
說明-
紅框中為必填的配置項。
-
JindoFS支援多命名空間,本文命名空間以test為例。
參數
參數說明
樣本
jfs.namespaces
表示當前JindoFS支援的命名空間,多個命名空間時以逗號隔開。
test
jfs.namespaces.test.uri
表示test命名空間的後端儲存。
oss://oss-bucket/oss-dir
說明該配置也可以配置到OSS bucket下的具體目錄,該命名空間即以該目錄作為根目錄來讀寫資料。
jfs.namespaces.test.mode
表示test命名空間為Block Storage模式。
block
說明JindoFS支援block和cache兩種儲存模式。
jfs.namespaces.test.oss.access.key
表示儲存後端OSS的AccessKey ID。
xxxx
說明考慮到效能和穩定性,推薦使用同賬戶、同region下的OSS bucket作為儲存後端,此時,E-MapReduce叢集能夠免密訪問OSS,無需配置AccessKey ID和AccessKey Secret。
jfs.namespaces.test.oss.access.secret
表示儲存後端OSS的AccessKey Secret。
配置完成後儲存並部署,然後在SmartData服務中重啟所有組件,即開始使用JindoFS。
-
-
建立叢集時添加自訂配置
E-MapReduce叢集在建立叢集時支援添加自訂配置,以同region下免密訪問OSS為例,勾選软件自定义配置,配置命名空間test的相關配置,詳情如下。
[ { "ServiceName":"BIGBOOT", "FileName":"bigboot", "ConfigKey":"jfs.namespaces","ConfigValue":"test" },{ "ServiceName":"BIGBOOT", "FileName":"bigboot", "ConfigKey":"jfs.namespaces.test.uri", "ConfigValue":"oss://oss-bucket/oss-dir" },{ "ServiceName":"BIGBOOT", "FileName":"bigboot", "ConfigKey":"jfs.namespaces.test.mode", "ConfigValue":"block" } ]
-
使用JindoFS
JindoFS使用上與HDFS類似,提供jfs首碼,將jfs替代hdfs即可使用。
目前,JindoFS能夠支援EMR叢集上的大部分計算群組件,包括Hadoop、Hive、Spark、Flink、Presto和Impala。
簡單樣本:
-
Shell命令
hadoop fs -ls jfs://your-namespace/ hadoop fs -mkdir jfs://your-namespace/test-dir hadoop fs -put test.log jfs://your-namespace/test-dir/ hadoop fs -get jfs://your-namespace/test-dir/test.log ./ -
MapReduce作業
hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar teragen -Dmapred.map.tasks=1000 10737418240 jfs://your-namespace/terasort/input hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar terasort -Dmapred.reduce.tasks=1000 jfs://your-namespace/terasort/input jfs://your-namespace/terasort/output -
Spark-SQL
CREATE EXTERNAL TABLE IF NOT EXISTS src_jfs (key INT, value STRING) location 'jfs://your-namespace/Spark_sql_test/';
磁碟空間水位控制
JindoFS後端基於OSS,可以提供海量的儲存,但是本地碟的容量是有限的,因此JindoFS會自動淘汰本地較冷的資料備份。我們提供了node.data-dirs.watermark.high.ratio和node.data-dirs.watermark.low.ratio這兩個參數用來調節本機存放區的使用容量,值均為0~1的小數表示使用比例,JindoFS預設使用所有資料盤,每塊盤的使用容量預設即為資料盤大小。前者表示使用量上水位比例,每塊資料盤的JindoFS佔用的空間到達上水位即會開始清理淘汰;後者表示使用量下水位比例,觸發清理後會將JindoFS的佔用空間清理到下水位。使用者可以通過設定上水位比例調節期望分給JindoFS的磁碟空間,下水位必須小於上水位,設定合理的值即可。
儲存策略
JindoFS提供了Storage Policy功能,提供更加靈活的儲存策略適應不同的儲存需求,可以對目錄設定以下四種儲存策略。
|
策略 |
策略說明 |
|
COLD |
表示資料僅在OSS上有一個備份,沒有本地備份,適用於冷資料存放區。 |
|
WARM |
預設策略。 表示資料在OSS和本地分別有一個備份, 本地備份能夠有效地提供後續的讀取加速。 |
|
HOT |
表示資料在OSS上有一個備份,本地有多個備份,針對一些最熱的資料提供更進一步的加速效果。 |
|
TEMP |
表示資料僅有一個本地備份,針對一些臨時性資料,提供高效能的讀寫,但降低了資料的高可靠性,適用於一些臨時資料的存取。 |
JindoFS提供了Admin工具設定目錄的Storage Policy(預設為 WARM),新增的檔案將會以父目錄所指定的Storage Policy進行儲存,使用方式如下。
jindo dfsadmin -R -setStoragePolicy [path] [policy]
通過以下命令,擷取某個目錄的儲存策略:
jindo dfsadmin -getStoragePolicy [path]
其中[path] 為設定policy的路徑名稱, -R表示遞迴設定該路徑下的所有路徑。
Admin工具
JindoFS提供了Admin工具的archive和jindo命令。
-
Admin工具提供archive命令,實現對冷資料的歸檔。
此命令提供了一種使用者顯式淘汰本機資料塊的方式。Hive分區表按天分區,假如業務上對一周前的分區資料認為不會再經常訪問,那麼就可以定期將一周前的分區目錄執行archive,淘汰本地備份,檔案備份將僅僅保留在後端OSS上。
Archive命令的使用方式如下。
jindo dfsadmin -archive [path]說明[path]為需要歸檔檔案的所在目錄路徑。
-
Admin工具提供jindo命令,為Namespace Service提供了一些管理員功能命令。
jindo dfsadmin [-options]說明可以通過
jindo dfsadmin --help命令擷取協助資訊。
Admin工具對Cache模式提供了diff和sync命令。
-
diff命令主要用來顯示本機資料與後端儲存系統資料之間的差異。
jindo dfsadmin -R -diff [path]說明預設情況下比較
[path]目錄的子目錄中中繼資料之間的差異,-R選項表示遞迴比較[path]目錄下所有的路徑。 -
sync命令用於同步本地與後端儲存之間的中繼資料。
jindo dfsadmin -R -sync [path]說明[path]表示需要同步中繼資料的路徑,預設只會同步[path]的下一級目錄,-R選項表示遞迴比較[path]目錄下所有的路徑。