本文介紹使用JindoFS SDK時,E-MapReduce(簡稱EMR)叢集外如何以免密方式訪問E-MapReduce JindoFS的檔案系統。
前提條件
適用環境:ECS(EMR環境外)+Hadoop+JavaSDK。
背景資訊
使用JindoFS SDK時,需要把環境中相關Jindo的包從環境中移除,如jboot.jar、smartdata-aliyun-jfs-*.jar。如果要使用Spark則需要把/opt/apps/spark-current/jars/裡面的包也刪除,從而可以正常使用。
步驟一:建立執行個體RAM角色
使用雲帳號登入RAM的控制台。
左側導覽列中,選擇。
單擊建立角色,選擇當前可信實體類型為阿里雲服務。
單擊下一步。
輸入角色名稱,從選擇受信服務列表中,選擇雲端服務器。
單擊完成。
步驟二:為RAM角色授予許可權
步驟三:為執行個體授予RAM角色
登入ECS管理主控台。
在左側導覽列,選擇。
在頂部狀態列左上方處,選擇地區。
找到要操作的ECS執行個體,選擇操作列的。

在彈窗中,選擇建立好的執行個體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步驟五:測試免密方式訪問的方法
使用Shell訪問OSS。
hdfs dfs -ls/-mkdir/-put/....... oss://<ossPath>使用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); } } }