全部產品
Search
文件中心

E-MapReduce:SmartData使用說明(EMR-3.22.0~3.25.1版本)

更新時間:May 23, 2026

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,建立叢集詳情請參見建立叢集

  • 配置叢集

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

    • 叢集建立好後初始化參數

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

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

        jfs.namespaces 的值設定為 test

      2. 單擊自定义配置。在 新增配置項 對話方塊中,添加以下配置項:將 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.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]目錄下所有的路徑。