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

E-MapReduce:JindoFS SDK のパスワード不要機能を使用する

最終更新日:Apr 11, 2025

このトピックでは、JindoFS SDK を使用する場合に、ECS インスタンス (EMR クラスタ内のインスタンスではない) からパスワード不要モードで JindoFileSystem (JindoFS) にアクセスする方法について説明します。

前提条件

1. EMR 用以外の ECS インスタンスがあります。 2. Hadoop エコシステムが使用されています。 3. Java 用の JindoFS SDK が取得されています。

背景情報

JindoFS SDK を使用する前に、jboot.jarsmartdata-aliyun-jfs-*.jar など、環境から Jindo 関連のパッケージを削除する必要があります。Spark を使用するには、/opt/apps/spark-current/jars/ ディレクトリにあるパッケージも削除する必要があります。

前提条件

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

  2. 左側のナビゲーションペインで、ID > ロールロール を選択します。

  3. RAMロール ページで、[ロールの作成] をクリックします。[ロールの作成] パネルで、信頼できるエンティティの種類として [alibaba Cloud サービス] を選択します。

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

  5. [RAMロール名] フィールドにロール名を入力し、Elastic Compute Service[信頼できるサービスの選択] ドロップダウンリストから を選択します。

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

背景情報

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

  2. オプション。システム権限を使用しない場合は、カスタム権限を作成できます。詳細については、RAMを使用したアクセス制御の実装 の「(オプション) カスタム認証ポリシーの作成」セクションをご参照ください。

  3. 左側のナビゲーションペインで、[ID] > [ロール]ロール を選択します。

  4. 作成された RAM ロールを見つけ、[ロール名] をクリックします。

  5. [詳細な権限] をクリックします。

  6. 表示されたパネルで、[タイプ] に [システムポリシー] または [カスタムポリシー] を選択します。

    たとえば、AliyunOSSReadOnlyAccess などです。具体的なビジネスニーズに基づいて適切なポリシーを選択してください。

  7. ポリシー名を入力します。

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

手順 1:インスタンス RAM ロールを作成する

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

  2. 左側のナビゲーションペインで、[インスタンスとイメージ] > [インスタンス] を選択します。

  3. 上部のナビゲーションバーで、リージョンを選択します。

  4. バインド先の ECS インスタンスを見つけ、[アクション] 列で image > インスタンス設定 > RAM ロールの割り当て/割り当て解除 を選択します。

    image

  5. [RAM ロールのバインド/バインド解除] ダイアログボックスで、RAM ロールを選択し、[OK] をクリックします。

手順 4:ECS で環境変数を構成する

次のいずれかのコマンドを実行して、ECS で環境変数を構成します。

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

および

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

手順 5:パスワードなしモードで JindoFS にアクセスする

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

    hdfs dfs -ls/-mkdir/-put/....... oss://<ossPath>
  2. 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 オブジェクトを取得します。
            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);
            }
        }
    }