Amazon EMR で Apache Hadoop ジョブが、「Timeout Waiting for Connection from Pool (プールからの接続待機中のタイムアウト)」というエラーメッセージで失敗します。

このエラーは通常、Amazon Simple Storage Service (Amazon S3) の Amazon EMR File System (EMRFS) 接続制限に達すると発生します。このエラーを解決するには、fs.s3.maxConnections プロパティの値を大きくします。これは、クラスターの実行中、または新しいクラスターの作成時に実行できます。

実行中のクラスターの fs.s3.maxConnections の値を大きくする

1.    SSH を使用してマスターノードに接続します。

2.    emrfs-site.xml ファイルを sudo として開きます。このファイルは、/usr/share/aws/emr/emrfs/conf ディレクトリにあります。

sudo vi /usr/share/aws/emr/emrfs/conf/emrfs-site.xml

3.    fs.s3.maxConnections プロパティを 50 を超える値に設定します。以下の例では、値を 100 に設定しています。アプリケーションに必要な S3 の同時接続数に応じて、もっと大きな値の選択が必要になる場合もあります。
注意: Apache HBase でクラスターを起動すると、fs.s3.maxConnections の値はデフォルトで 1000 に設定されます。fs.s3.maxConnections の値を大きくしてもタイムアウトエラーが解決しない場合は、アプリケーションで接続のリークがないか確認します。

<property>
  <name>fs.s3.maxConnections</name>
  <value>100</value>
</property>

4.    すべてのコアノードとタスクノードで、手順 2 と 3 を繰り返します。マスターノードで使用した値と同じ fs.s3.maxConnections の値を使用します。

5.    Hadoop ジョブを再度実行します。アプリケーションは、サービスを再起動しなくても fs.s3.maxConnections の新しい値を使用するはずです。

新しいクラスターの fs.s3.maxConnections の値を大きくする

新しいクラスターを起動するときにすべてのノードで fs.s3.maxConnections プロパティの値を設定するには、次のような設定オブジェクトを使用します。詳細については、「アプリケーションの設定」を参照してください。

[
    {
      "Classification": "emrfs-site",
      "Properties": {
        "fs.s3.maxConnections": "100",
      }
    }
 ]

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2019 年 1 月 28 日