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

E-MapReduce:よくある質問

最終更新日:Nov 09, 2025

このトピックでは、EMR Serverless Spark に関するよくある質問に回答します。

DLF との互換性

データの読み取り時に "java.net.UnknownHostException" エラーが発生した場合はどうすればよいですか?

  • 症状

    [データ開発] で SQL クエリを実行して Data Lake Formation (DLF) 1.0 のデータテーブルからデータを読み取ると、UnknownHostException エラーが発生します。

    image

  • 原因

    このエラーは通常、システムが指定されたホストを見つけられず、データテーブルのクエリに失敗するために発生します。

  • 解決策

    構成方法は、Hadoop 分散ファイルシステム (HDFS) クラスターが高可用性 (HA) モードであるかどうかによって異なります。

    • HA を使用しない HDFS パスへのアクセス

      テーブルの location が HA が有効になっていないクラスター内の HDFS パスを指している場合、location 内のドメイン名にアクセスできることを確認する必要があります。デフォルトでは、master-1-1.<cluster-id>.<region>.emr.aliyuncs.com に直接アクセスできます。他のドメイン名については、マッピングを追加する必要があります。詳細については、「ドメイン名の管理」をご参照ください。

    • HA を使用した HDFS パスへのアクセス

      テーブルの `location` が HA が有効になっているクラスター内の HDFS パスを指している場合、まずドメイン名のマッピングを構成する必要があります。次に、カスタム構成ファイルの管理で hdfs-site.xml という名前の構成ファイルを作成し、`/etc/spark/conf` パスに保存します。このステップにより、Java Runtime または Fusion Runtime がデータにアクセスできるようになります。以下のコードはサンプルファイルです。完全な内容は、EMR on ECS クラスターの hdfs-site.xml ファイルに基づいている必要があります。

      <?xml version="1.0"?>
      <configuration>
        <property>
          <name>dfs.nameservices</name>
          <value>hdfs-cluster</value>
        </property>
        <property>
          <name>dfs.ha.namenodes.hdfs-cluster</name>
          <value>nn1,nn2,nn3</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.hdfs-cluster.nn1</name>
          <value>master-1-1.<cluster-id>.<region-id>.emr.aliyuncs.com:<port></value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.hdfs-cluster.nn2</name>
          <value>master-1-2.<cluster-id>.<region-id>.emr.aliyuncs.com:<port></value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.hdfs-cluster.nn3</name>
          <value>master-1-3.<cluster-id>.<region-id>.emr.aliyuncs.com:<port></value>
        </property>
        <property>
          <name>dfs.client.failover.proxy.provider.hdfs-cluster</name>
          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
      </configuration>
    • (オプション) Kerberos が有効な HDFS パスへのアクセスの構成

      ジョブが Kerberos が有効な HDFS パスにアクセスする必要がある場合は、Spark 構成に spark.kerberos.access.hadoopFileSystems パラメーターを追加する必要があります。このパラメーターの値は、HDFS クラスターの `fs.defaultFS` 構成に基づいている必要があります。たとえば、HA EMR on ECS クラスターのデフォルト値は hdfs://hdfs-cluster です。

OSS との互換性

アカウント間で OSS リソースにアクセスするにはどうすればよいですか?

EMR Serverless Spark で Spark ジョブを実行する場合、2 つのメソッドを使用して、別の Alibaba Cloud アカウントに属する Object Storage Service (OSS) リソースにアクセスできます。ワークスペースレベルで権限を付与するか、タスクまたはセッションレベルで設定を構成できます。

  • ワークスペースレベル

    ターゲット OSS バケットのバケットポリシーを構成して、Serverless Spark ワークスペースの実行ロールに読み取りおよび書き込み権限を付与します。次のステップに従ってください:

    1. OSS コンソールのバケットポリシーページに移動します。

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

      2. 左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

      3. 左側のナビゲーションウィンドウで、[アクセス制御] > [バケットポリシー] を選択します。

    2. [バケットポリシー] ページで、[GUI でルールを追加] タブで、[承認] をクリックします。

    3. [承認] パネルでパラメーターを構成し、[OK] をクリックします。

      パラメーター

      説明

      リソース

      [バケット全体] を選択します。

      被承認者

      [他のアカウント] を選択します。プリンシパルを arn:sts::<uid>:assumed-role/<role-name>/* に設定します。この値では:

      • <uid> を Alibaba Cloud アカウント ID に置き換えます。

      • <role-name> を Serverless Spark ワークスペースの実行ロールの名前に置き換えます。名前は大文字と小文字を区別します。実行ロールを表示するには、EMR Serverless Spark ワークスペースリストページに移動し、ターゲットワークスペースの [アクション] 列にある [詳細] をクリックします。デフォルトのロールは AliyunEMRSparkJobRunDefaultRole です。

      必要に応じて他のパラメーターを構成します。詳細については、「GUI を使用したバケットポリシーの構成」をご参照ください。

  • タスクおよびセッションレベル

    タスクまたはセッションを作成するときに、Spark 構成セクションに次の構成を追加して、ターゲット OSS バケットにアクセスします。

    spark.hadoop.fs.oss.bucket.<bucketName>.endpoint <endpoint>
    spark.hadoop.fs.oss.bucket.<bucketName>.credentials.provider com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider
    spark.hadoop.fs.oss.bucket.<bucketName>.accessKeyId <accessID>
    spark.hadoop.fs.oss.bucket.<bucketName>.accessKeySecret <accessKey>

    必要に応じて、次の情報を置き換えます。

    • <bucketName>: アクセスする OSS バケットの名前。

    • <endpoint>: OSS のエンドポイント。

    • <accessID>: OSS データへのアクセスに使用される Alibaba Cloud アカウントの AccessKey ID。

    • <accessKey>: OSS データへのアクセスに使用される Alibaba Cloud アカウントの AccessKey Secret。

タスク実行エラー:OSS ファイルが存在しないか、アクセス権がありません

    S3 との互換性

    S3 にアクセスするにはどうすればよいですか?

    タスクまたはセッションを作成するときに、Spark 構成セクションに次の構成を追加して S3 にアクセスします。

    spark.hadoop.fs.s3.impl com.aliyun.jindodata.s3.JindoS3FileSystem
    spark.hadoop.fs.AbstractFileSystem.s3.impl com.aliyun.jindodata.s3.S3
    spark.hadoop.fs.s3.bucket.<bucketName>.accessKeyId <accessID>
    spark.hadoop.fs.s3.bucket.<bucketName>.accessKeySecret <accessKey> 
    spark.hadoop.fs.s3.bucket.<bucketName>.endpoint <endpoint>
    spark.hadoop.fs.s3.credentials.provider com.aliyun.jindodata.s3.auth.SimpleCredentialsProvider

    必要に応じて、次の情報を置き換えます。

    • <bucketName>: アクセスする S3 バケットの名前。

    • <endpoint>: S3 のエンドポイント。

    • <accessID>: S3 データへのアクセスに使用されるアカウントの AccessKey ID。

    • <accessKey>: S3 データへのアクセスに使用されるアカウントの AccessKey Secret。

    OBS との互換性

    OBS にアクセスするにはどうすればよいですか?

    タスクまたはセッションを作成するときに、Spark 構成セクションに次の構成を追加して OBS にアクセスします。

    spark.hadoop.fs.obs.impl com.aliyun.jindodata.obs.JindoObsFileSystem
    spark.hadoop.fs.AbstractFileSystem.obs.impl com.aliyun.jindodata.obs.OBS
    spark.hadoop.fs.obs.bucket.<bucketName>.accessKeyId <accessID>
    spark.hadoop.fs.obs.bucket.<bucketName>.accessKeySecret <accessKey> 
    spark.hadoop.fs.obs.bucket.<bucketName>.endpoint <endpoint>
    spark.hadoop.fs.obs.credentials.provider com.aliyun.jindodata.obs.auth.SimpleCredentialsProvider

    必要に応じて、次の情報を置き換えます。

    • <bucketName>: アクセスする OBS バケットの名前。

    • <endpoint>: OBS のエンドポイント。

    • <accessID>: OBS データへのアクセスに使用されるアカウントの AccessKey ID。

    • <accessKey>: OBS データへのアクセスに使用されるアカウントの AccessKey Secret。