全部產品
Search
文件中心

Object Storage Service:通過RootPolicy訪問

更新時間:Jun 19, 2024

OSS-HDFS服務支援RootPolicy。您可以通過RootPolicy為OSS-HDFS服務設定自訂首碼,在無需修改原有訪問hdfs://首碼作業的基礎上,將作業直接運行在OSS-HDFS服務上。

前提條件

操作步驟

  1. 配置環境變數。

    1. 串連ECS執行個體。具體操作,請參見串連ECS執行個體

    2. 進入已安裝的JindoSDK JAR包下的bin目錄。

      cd jindosdk-x.x.x/bin/
      說明

      x.x.x表示JindoSDK JAR包版本號碼。

    3. 授予bin目錄下的jindo-util檔案的讀、寫、執行的許可權。

      chmod 700 jindo-util
    4. jindo-util檔案重新命名為jindo

      mv jindo-util jindo
    5. 建立設定檔jindosdk.cfg,然後在設定檔中添加以下配置項。

      [common]保持以下預設配置。
      logger.dir = /tmp/jindo-util/
      logger.sync = false
      logger.consolelogger = false
      logger.level = 0
      logger.verbose = 0
      logger.cleaner.enable = true
      hadoopConf.enable = false
      
      [jindosdk]自訂以下配置項。
      <!-- 以下以杭州地區為例,其他地區請根據實際情況替換。 -->
      fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com
      <!-- 配置訪問OSS-HDFS服務的AccessKeyId、AccessKeySecret。 -->
      fs.oss.accessKeyId = LTAI5tJCTj5SxJepqxQ2****   
      fs.oss.accessKeySecret = i0uLwyd0mHxXetZo7b4j4CXP16****                                        
    6. 設定環境變數。

      export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>

      <JINDOSDK_CONF_DIR>填寫jindosdk.cfg 設定檔所在的絕對路徑。

  2. 設定RootPolicy。

    您可以通過SetRootPolicy命令為指定Bucket註冊自訂首碼訪問地址,配置命令如下:

    jindo admin -setRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/

    以上命令涉及的各項參數說明如下:

    參數

    說明

    bucket_name

    填寫已開通OSS-HDFS服務的Bucket名稱。

    dls_endpoint

    開通OSS-HDFS服務所在地區對應的Endpoint,例如cn-hangzhou.oss-dls.aliyuncs.com

    如果您不希望在每一次使用RootPolicy相關命令時重複添加<dls_endpoint>選項,您可以選擇以下任意方式在Hadoop的core-site.xml檔案中添加配置項。

    • 方式一

      <configuration>
          <property>
              <name>fs.oss.endpoint</name>
              <value><dls_endpoint></value>
          </property>
      </configuration>
    • 方式二

      <configuration> 
       <property>
              <name>fs.oss.bucket.<bucket_name>.endpoint</name>
              <value><dls_endpoint></value>
          </property>
      </configuration>

    your_ns_name

    自訂訪問OSS-HDFS服務的nsname,支援任意非Null 字元串,例如test,目前的版本僅支援根目錄。

  3. 配置Access Policy發現地址和Scheme實作類別。

    您需要在Hadoop的core-site.xml檔案中完成以下配置項。

    <configuration>
        <property>
            <name>fs.accessPolicies.discovery</name>
            <value>oss://<bucket_name>.<dls_endpoint>/</value>
        </property>
        <property>
            <name>fs.AbstractFileSystem.hdfs.impl</name>
            <value>com.aliyun.jindodata.hdfs.HDFS</value>
        </property>
        <property>
            <name>fs.hdfs.impl</name>
            <value>com.aliyun.jindodata.hdfs.JindoHdfsFileSystem</value>
        </property>
    </configuration>

    如果您需要為多個Bucket配置Access Policy發現地址和Scheme實作類別,則多個Bucket之間需使用逗號,分隔。

  4. 驗證是否已成功配置RootPolicy。

    hadoop fs -ls hdfs://<your_ns_name>/

    返回以下結果,說明已成功配置RootPolicy。

    drwxr-x--x   - hdfs  hadoop          0 2023-01-05 12:27 hdfs://<your_ns_name>/apps
    drwxrwxrwx   - spark hadoop          0 2023-01-05 12:27 hdfs://<your_ns_name>/spark-history
    drwxrwxrwx   - hdfs  hadoop          0 2023-01-05 12:27 hdfs://<your_ns_name>/tmp
    drwxrwxrwx   - hdfs  hadoop          0 2023-01-05 12:27 hdfs://<your_ns_name>/user
  5. 使用自訂首碼訪問OSS-HDFS服務。

    重啟Hive、Spark等服務後,您可以通過使用自訂首碼訪問OSS-HDFS服務。

  6. (可選)RootPolicy其他用法。

    • 列舉指定Bucket當前註冊的所有首碼地址

      您可以通過listAccessPolicies命令列舉指定Bucket當前註冊的所有首碼地址。

      jindo admin -listAccessPolicies oss://<bucket_name>.<dls_endpoint>/
    • 刪除指定Bucket當前註冊的所有首碼地址

      您可以通過unsetRootPolicy命令刪除指定Bucket當前註冊的所有首碼地址。

      jindo admin -unsetRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/

相關文檔

關於RootPolicy相關命令的更多資訊,請參見Jindo CLI使用指南