前提條件
適用環境:ECS(EMR環境外)+Hadoop+JavaSDK。
背景資訊
使用JindoFS SDK時,需要把環境中相關Jindo的包從環境中移除,如jboot.jar、smartdata-aliyun-jfs-*.jar。如果要使用Spark則需要把/opt/apps/spark-current/jars/裡面的包也刪除,從而可以正常使用。
步驟一:建立執行個體RAM角色
使用雲帳號登入RAM的控制台。
左側導覽列中,選擇。
單擊建立角色,選擇當前可信實體類型為阿里雲服務。
單擊下一步。
輸入角色名稱,從選擇受信服務列表中,選擇雲端服務器。
單擊完成。
步驟二:為RAM角色授予許可權
使用雲帳號登入RAM的控制台。
(可選)如果您不使用系統許可權,可以參見帳號存取控制建立自訂權限原則章節建立一個自訂策略。
左側導覽列中,選擇。
單擊新建立的角色名稱。
單擊精確授權。
選擇權限類別型為系統策略或自訂策略。
例如,AliyunOSSReadOnlyAccess。請根據您的具體業務需求選擇合適的策略。
輸入策略名稱稱。
單擊確定。
步驟三:為執行個體授予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);
}
}
}