This topic describes how to resolve the DataNode Xceiver limit exception.
If you receive the following error, the DataNode has exhausted its Xceiver thread pool and cannot accept more concurrent read or write connections.
Error message
java.io.IOException: Xceiver count xxxx exceeds the limit of concurrent xcievers: xxxxCause
The dfs.datanode.max.transfer.threads parameter controls the size of the thread pool that a DataNode uses to process read and write data streams. The default value is 4096. Under high-concurrency workloads—such as many parallel read or write jobs running simultaneously—the thread pool can be exhausted, triggering the error above.
Solution
Increase the value of dfs.datanode.max.transfer.threads in the Hadoop Distributed File System (HDFS) service configuration.
Log on to the EMR on ECS console.
In the top navigation bar, select the region where your cluster resides and select a resource group.
Open the Configure tab of the HDFS service:
On the EMR on ECS page, find the target cluster and click Services in the Actions column.
Click the Services tab, find the HDFS service, and click Configure.
On the Configure tab, enter
dfs.datanode.max.transfer.threadsin the search box to locate the parameter, then increase its value.A common starting point is to double the current value—for example, set it to 8192 or 16384.