0

我已经使用 HDFS API 构建了一个存储系统。我现在正在对系统进行一些性能测试。我通过SIEGE创建了大量并发文件检索请求(例如:) siege -c 500 -r 1 "http://bucket1.s3.bigdatapro.org/1.jpg"。但是,我在datanodes上遇到了以下问题:

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。我还遗漏了什么吗?还是我做错了什么?

谢谢

4

1 回答 1

1

您可以根据应用程序需要的并发线程数进一步增加 xcievers 计数。在我的研究中,我发现你放的越多被证明是不好的,因为我们在很大程度上受到了性能的打击。

同样在您的 Datanodes 中,检查 ulimit 计数是否会产生任何问题。

于 2013-09-17T17:02:56.137 回答