我使用HDFS API构建了一个存储系统。我现在正在对系统进行一些性能测试。我通过SIEGE创建了大量并发文件检索请求(例如:siege -c 500 -r 1 "http://bucket1.s3.bigdatapro.org/1.jpg"
)。但是,我在datanode上遇到了以下问题:
013-06-17 21:08:56,987 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(146.169.35.109:50010, storageID=DS-1983611132-146.169.35.109-50010-1350751070203, infoPort=50075, ipcPort=50020):DataXceiver
java.io.IOException: xceiverCount 4097 exceeds the limit of concurrent xcievers 4096
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:156)
我已经设置了这个:
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
我可以将它增加到更高的值吗?是否有任何副作用将此设置为真正的高价值?像10000000? 我还将最大打开文件增加到50000.我还缺少什么吗?或者我做错了什么?
由于
答案 0 :(得分:1)
您可以根据应用程序在并发中需要多少线程来进一步增加xcievers计数。在我的研究中,我发现你投入的越多被证明是坏的,因为我们在很长一段时间内受到了表现的影响。
同样在您的Datanodes中,如果创建任何问题,请检查ulimit计数。