hadoop报错导致flume无法写入日志文件,hadoop报错如上xceiverCount 258 exceeds the limit of concurre
hadoop报错导致flume无法写入日志文件,hadoop报错如下xceiverCount 258 exceeds the limit of concurrent
hadoop报错导致flume无法写入日志文件,hadoop报错如下xceiverCount 258 exceeds the limit of concurrent xcievers 256
hadoop报错导致flume无法写入日志文件,hadoop报错如下xceiverCount 258 exceeds the limit of concurrent xcievers 256
问题描述:报错具体如下
2013-01-21 00:00:07,547 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Receiving block blk_-73922497349805710_31215 src: /127.0.0.1:42879 dest: /127.0.0.1:50010
2013-01-21 00:00:07,721 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(127.0.0.1:50010, storageID=DS-120876865-10.4.124.236-50010-1354772633249, infoPort=50075, ipcPort=50020):DataXceiver
java.io.IOException: xceiverCount 258 exceeds the limit of concurrent xcievers 256
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:92)
at java.lang.Thread.run(Thread.java:722)
原因分析
由于问题 出现的时间点在0点左右,因此由于flume按天归档日志文件,此时需要大量xcievers导致,先按照网上的方案修改配置再观察吧,具体方案如下vi hdfs-site.xml
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
dfs.datanode.max.xcievers 对于datanode来说,就如同linux上的文件句柄的限制,当datanode 上面的连接数操作配置中的设置时,datanode就会拒绝连接。该参数限制了datanode所允许同时执行的发送和接受任务的数量,缺省为256,hadoop-defaults.xml中通常不设置这个参数。这个限制看来实际有些偏小,高负载下,DFSClient 在put数据的时候会报 could not read from stream 的 Exception。
参考资料:http://blog.csdn.net/awayyao/article/details/7677393
http://blog.csdn.net/azhao_dn/article/details/7712912
http://labs.chinamobile.com/mblog/225_18094