使用JindoFS SDK免密功能

更新時間:
Copy as MD

本文介紹使用JindoFS SDK時,E-MapReduce(簡稱EMR)叢集外如何以免密方式訪問E-MapReduce JindoFS的檔案系統。

前提條件

適用環境:ECS(EMR環境外)+Hadoop+JavaSDK。

背景資訊

使用JindoFS SDK時,需要把環境中相關Jindo的包從環境中移除,如jboot.jarsmartdata-aliyun-jfs-*.jar。如果要使用Spark則需要把/opt/apps/spark-current/jars/裡面的包也刪除,從而可以正常使用。

步驟一:建立執行個體RAM角色

  1. 使用雲帳號登入RAM的控制台

  2. 左側導覽列中,選擇身份管理 > 角色

  3. 單擊创建角色,選擇當前可信實體類型為阿里云服务

  4. 單擊下一步

  5. 輸入角色名称,從选择受信服务列表中,選擇云服务器

  6. 單擊完成

步驟二:為RAM角色授予許可權

  1. 使用雲帳號登入RAM的控制台

  2. (可選)如果您不使用系統許可權,可以參見帳號存取控制建立自訂權限原則章節建立一個自訂策略。

  3. 左側導覽列中,選擇身份管理 > 角色

  4. 單擊新建立的角色名稱。

  5. 單擊精确授权

  6. 選擇權限類別型為系统策略自定义策略

    例如,AliyunOSSReadOnlyAccess。請根據您的具體業務需求選擇合適的策略。

  7. 輸入策略名稱稱。

  8. 單擊确定

步驟三:為執行個體授予RAM角色

  1. 登入阿里雲E-MapReduce控制台

  2. 在左側導覽列,選擇執行個體與鏡像 > 实例

  3. 在頂部狀態列左上方處,選擇地區。

  4. 找到要操作的ECS執行個體,選擇操作列的image > 实例设置 > 授予/收回RAM角色

  5. 在彈窗中,選擇建立好的執行個體RAM角色,單擊确定完成授予。

步驟四:在ECS上設定環境變數

執行如下命令,在ECS上設定環境變數。

export CLASSPATH=/xx/xx/jindofs-2.5.0-sdk.jar

或者執行如下命令。

HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/xx/xx/jindofs-2.5.0-sdk.jar

步驟五:測試免密方式訪問的方法

  1. 使用Shell訪問OSS。

    hdfs dfs -ls/-mkdir/-put/....... oss://<ossPath>
  2. 使用Hadoop FileSystem訪問OSS。

    JindoFS SDK支援使用Hadoop FileSystem訪問OSS,範例程式碼如下。

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.LocatedFileStatus;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.fs.RemoteIterator;
    import java.net.URI;
    public class test {
        public static void main(String[] args) throws Exception {
            FileSystem fs = FileSystem.get(new URI("ossPath"), new Configuration());
            RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path("ossPath"), false);
            while (iterator.hasNext()){
                LocatedFileStatus fileStatus = iterator.next();
                Path fullPath = fileStatus.getPath();
                System.out.println(fullPath);
            }
        }
    }