Amazon EMR の Apache Hadoop ジョブが「プールからの接続待機中のタイムアウト」というエラーメッセージで失敗します。
解決方法
このエラーは通常、Amazon Simple Storage Service (Amazon S3) の Amazon EMR File System (EMRFS) 接続制限に達すると発生します。このエラーを解決するには、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 の値を使用します。
注: Amazon EMR バージョン 5.21.0 以降では、クラスターアプリケーションを再設定し、実行中のクラスター内の各インスタンスグループに追加の設定分類を指定できます。詳細については、Reconfigure an instance group in a running cluster を参照してください。
5. Hadoop ジョブを再度実行します。アプリケーションは、サービスを再起動しなくても fs.s3.maxConnections の新しい値を使用する必要があります。
新しいクラスターを起動するときにすべてのノードで fs.s3.maxConnections プロパティの値を設定するには、次のような設定オブジェクトを使用します。詳細については、アプリケーションの構成 を参照してください。
[
{
"Classification": "emrfs-site",
"Properties": {
"fs.s3.maxConnections": "100"
}
}
]
関連情報
Work with storage and file systems