全部產品
Search
文件中心

E-MapReduce:JindoFS 使用說明(E-MapReduce-3.22.0及以上版本)

更新時間:Jul 01, 2024

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版本)
signal_path

環境準備

  • 建立叢集

    選擇 E-MapReduce-3.22.0 及以上版本,勾選可選服務中的SmartData,具體操作步驟請參見建立叢集

    create_cluster
  • 配置叢集
    SmartData提供的JindoFS檔案系統使用OSS作為儲存後端,因此在使用JindoFS之前需配置一些OSS相關參數。下面提供兩種配置方式,第一種是先建立好叢集,修改Bigboot相關參數,需重啟SmartData服務生效;第二種是建立叢集過程中添加自訂配置,這樣叢集建立好後相關服務就能按照自訂參數啟動:
    • 叢集建立好後初始化參數

      所有JindoFS相關配置都在Bigboot組件中,配置如下圖所示:

      1. 服務配置頁面,單擊bigboot頁簽。

        server_config
      2. 單擊自訂配置cong_sel
      說明
      • 紅框中為必填的配置項。
      • 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的AK。 xxxx
      說明 考慮到效能和穩定性,推薦使用同賬戶、同region下的OSS bucket作為儲存後端,此時,E-MapReduce叢集能夠免密訪問OSS,無需配置 AK和secret。
      jfs.namespaces.test.oss.access.secret 表示儲存後端OSS的secret。

      配置完成後儲存並部署,然後在SmartData服務中重啟所有組件,即開始使用JindoFS。

      server
    • 建立叢集時添加自訂配置
      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"
      }
      ]
      kerbernets

使用 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.rationode.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]目錄下所有的路徑。