本文主要介紹JindoFS的外部客戶端,以及一些典型的應用場景。

概述

JindoFS外部客戶端,主要是為E-MapReduce集群外部訪問JindoFS集群提供一種可行的方法。現在JindoFS外部客戶端只能訪問塊存儲模式下的JindoFS,不支持訪問緩存模式下的JindoFS。實際上,緩存模式兼容OSS原始語義,因此外部訪問僅需用普通OSS客戶端即可。

應用場景

JindoFS外部客戶端實現了Hadoop文件系統的接口,在用戶程序跟E-MapReduce JindoFS Namespace服務網絡相通的情況下, 用戶可以通過JindoFS外部客戶端去訪問JindoFS上存儲的數據, 但外部客戶端不能利用E-MapReduce JindoFS的數據緩存能力,相比E-MapReduce集群內部訪問JindoFS集群,性能有所損失。

配置外部客戶端

已配置JindoFS塊存儲模式的Namespace,詳情請參見JindoFS塊存儲模式

  1. 獲取Bigboot程序包。

    在E-MapReduce集群內部/usr/lib/bigboot-current路徑下,獲取Bigboot程序包。

    說明 一般情況下,程序使用Native開發。
  2. 配置環境。

    設置環境變量BIGBOOT_HOME為程序安裝根目錄,將程序根目錄下extlib的路徑,添加到用戶使用的大數據組件(Hadoop或Spark等)的Classpath中。

  3. 從E-MapReduce集群內部拷貝配置文件/usr/lib/bigboot-current/conf/bigboot.cfg.external,到用戶客戶機上對應的安裝目錄conf/bigboot.cfg
  4. 配置Namespace Service。

    • client.namespace.rpc.port:配置JindoFS Namespace Service的監聽端口。
    • client.namespace.rpc.address:配置JindoFS Namespace Service的監聽地址。
      說明 默認E-MapReduce集群中的配置文件已經配置好這兩項。
  5. 配置數據訪問相關的配置項。

    • client.namespaces.{YourNamespace}.oss.access.bucket:配置OSS bucket選項。
    • client.namespaces.{YourNamespace}.oss.access.endpoint:配置OSS endpoint選項。
    • client.namespaces.{YourNamespace}.oss.access.key:配置OSS的AccessKey ID。
    • client.namespaces.{YourNamespace}.oss.access.secret:配置OSS的AccessKey Secret。
      說明 其中{YourNamespace}為外部客戶端要訪問的Namespace的名稱,本文Namespace的名稱以test為例。

      配置示例如下。

      client.namespace.rpc.port = 8101
      client.namespace.rpc.address = {RPC_Address}
      client.namespaces.test.oss.access.bucket = {YourOssBucket}
      client.namespaces.test.oss.access.endpoint = {YourOssEndpoint}
      client.namespaces.test.oss.access.key = {YourOssAccessKeyID}
      client.namespaces.test.oss.access.secret = {YourOssAccessKeySecret}

配置驗證

驗證如下信息:

  • 通過以下命令,驗證Namespace是否正確。
    hdfs dfs -ls jfs://test/
  • 通過以下命令,驗證數據是否可以上傳或者下載。
    hdfs dfs -put /etc/hosts  jfs://test/
    
    hdfs dfs -get jfs://test/hosts