本文介绍DataNode出现Xceiver数量限制异常的解决方案。

具体报错

java.io.IOException: Xceiver count xxxx exceeds the limit of concurrent xcievers: xxxx

问题原因

dfs.datanode.max.transfer.threads参数用来设置DataNode处理读写数据流的线程池大小,默认值为4096个。如果该参数设置太小,会导致DataNode出现Xceiver数量限制的异常。

解决方案

  1. 登录EMR on ECS控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组
  3. 进入HDFS服务的配置页面。
    1. 集群管理页面,单击目标集群操作列的集群服务
    2. 集群服务页面,单击HDFS服务区域的配置
  4. 在配置搜索区域,搜索参数dfs.datanode.max.transfer.threads,并适当地调大该参数值,一般建议翻倍增加,例如8192、16384。
    说明 dfs.datanode.max.transfer.threads参数表示DataNode处理读写数据流的线程池大小,默认值为4096个。