すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Credential-free access with the JindoFS SDK

最終更新日:Jul 18, 2026

JindoFS SDK を使用して、E-MapReduce (EMR) クラスター外から認証情報なしで EMR の JindoFS ファイルシステムにアクセスできます。

前提条件

EMR クラスター外にある ECS インスタンスで、Hadoop および Java SDK がインストールされていること。

背景情報

JindoFS SDK を使用する前に、環境から jboot.jarsmartdata-aliyun-jfs-*.jar など、Jindo 関連のすべてのパッケージを削除してください。Spark を使用する場合は、/opt/apps/spark-current/jars/ ディレクトリからもこれらのパッケージを削除します。

ステップ 1:インスタンス RAM ロールの作成

  1. Alibaba Cloud アカウントで RAM コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、Identities > Role を選択します。

  3. Create Role をクリックします。信頼できるエンティティの種類として、[Alibaba Cloud サービス] を選択します。

  4. [次へ] をクリックします。

  5. [Role Name] を入力します。[信頼できるサービスの選択] リストから、クラウドサーバー (ECS) を選択します。

  6. [Complete] をクリックします。

ステップ 2:RAM ロールへの権限付与

  1. Alibaba Cloud アカウントで RAM コンソール にログインします。

  2. (任意)システムポリシーを使用しない場合は、カスタムポリシーを作成できます。詳細については、「Account access control」をご参照ください。

  3. 左側のナビゲーションウィンドウで、Identities > Role を選択します。

  4. 作成したロールの名前をクリックします。

  5. **Permissions** タブで、Add Permissions をクリックします。

  6. Authorization Scope で、System Policy または Custom Policy を選択します。

    たとえば、AliyunOSSReadOnlyAccess ポリシーを使用できます。必要な最小限の権限を持つポリシーを選択してください。

  7. アタッチするポリシーを選択します。

  8. OK をクリックします。

ステップ 3:RAM ロールのインスタンスへのアタッチ

  1. ECS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、Instances & Images > インスタンス を選択します。

  3. 上部のナビゲーションバーで、ご利用のインスタンスがあるリージョンを選択します。

  4. 対象の ECS インスタンスを見つけ、Actions 列で、image > インスタンスの設定 > Attach/Detach RAM Role を選択します。

    image

  5. 表示されるダイアログボックスで、インスタンス RAM ロールを選択し、OK をクリックします。

ステップ 4:環境変数の設定

ECS インスタンスで次のコマンドを実行し、CLASSPATH 環境変数を設定します。

export CLASSPATH=/path/to/jindofs-x.y.z-sdk.jar

Hadoop 環境では、代わりに次のコマンドを実行します。

HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/path/to/jindofs-x.y.z-sdk.jar

ステップ 5:認証情報不要のアクセスのテスト

  1. シェルを使用して OSS にアクセスします。

    hdfs dfs -ls oss://<your-bucket-name>/
  2. Hadoop FileSystem API を使用して OSS にアクセスします。

    標準の Hadoop FileSystem API を使用して 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 {
            // ossPath を実際の OSS パス(例:oss://your-bucket-name/)に置き換えてください。
            String ossPath = "oss://your-bucket-name/"; 
            
            // SDK は自動的にインスタンスメタデータサービスから認証情報を取得します。
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(new URI(ossPath), conf);
    
            // 指定パス内のファイルを一覧表示します。
            RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(ossPath), false);
            while (iterator.hasNext()){
                LocatedFileStatus fileStatus = iterator.next();
                Path fullPath = fileStatus.getPath();
                System.out.println(fullPath);
            }
        }
    }