HDFS
场景1:
在DataNode开始工作(通电)的时候,会上报本地的数据块给NameNode的客户端进行注册,这时候客户端个数比较关键,如果太少,DataNode在连接NameNode的时候会出现总是超时或者连接被拒绝;如果设置太大,则内存开销会增大,造成不必要的浪费,最终可能导致内存溢出。
参数:dfs.namenode.handler.count
NameNode 有一个工作线程池,用来处理不同 DataNode 的并发心跳以及客户端并发的元数据操作,线程池的大小就是根据该参数指定的,
默认值 10,该值的一般设置原则是将其设置为 集群大小的自然对数乘以20,即20logN,N为集群大小。
<property>
<name>dfs.namenode.handler.count</name>
<value>10</value>
</property>
具体计算可以使用python,以下示例以
8个节点为例
[root@fan102 ~]# python -c 'import math ; print int(math.log(8) * 20)'
41