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

E-MapReduce:ファイル書き込み時のエラー: DataXceiver Premature EOF from inputStream

最終更新日:Mar 27, 2026

本トピックでは、「DataXceiver Premature EOF from inputStream」エラーの解決方法について説明します。

エラーメッセージ

DataXceiver error processing WRITE_BLOCK operation src: /10.*.*.*:35692 dst: /10.*.*.*:50010 java.io.IOException: Premature EOF from inputStream

原因

各 DataNode は、dfs.datanode.max.transfer.threads パラメーター (デフォルト値: 4096) を使用して、同時データ転送スレッドの数を制限します。ジョブが多数の HDFS 書き込みストリームを同時に開くと、アクティブな xceiver の数がこの制限を超える可能性があります。

制限を超えると、DataNode ログに原因を特定できる二次的なエラーが記録されます。

解決策

ステップ 1: DataNode ログで原因の確認

DataNode ログをチェックして、これが原因であることを確認します。手順については、「HDFS サービスログ」をご参照ください。

通常、ログには次のメッセージが含まれています:

java.io.IOException: Xceiver count 4097 exceeds the limit of concurrent xcievers: 4096
at org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:150)

このメッセージが表示された場合は、ステップ 2 に進んでください。

手順 2: dfs.datanode.max.transfer.threads の値を増加させる

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

  2. 上部のナビゲーションバーで、ご利用のクラスターが存在するリージョンを選択し、リソースグループを選択します

  3. ECS 上の EMR ページで、クラスターを見つけ、[サービス][操作] 列でクリックします。

  4. 表示されるページで、[設定] タブをクリックします。

  5. dfs.datanode.max.transfer.threads を検索し、その値を引き上げます。

新しい値は、現在の制限値の 2 倍に設定します。たとえば、現在の制限値が 4096 の場合は 8192 に設定します。ワークロードの同時実行性が非常に高い場合は、16384 に設定します。

説明

dfs.datanode.max.transfer.threads パラメーターは、DataNode が読み取りおよび書き込みデータストリームを処理するために使用するスレッドの最大数を制御します。デフォルト値は 4096 です。

Hadoop 分散ファイルシステム (HDFS) にデータを書き込む際の「DataXceiver Premature EOF from inputStream」エラーを修正します。