hadoop集群中多个datanode中每一个datanode存储的数据的占比相当,负载均衡和每一个datanode的硬件相关的
对于hadoop集群来说 namenode会定期检查集群的负载 如果发现集群中datanode节点的负载不均衡的情况下 自动启动负载均衡
进行负载均衡---》 将存储占比大的datanode节点上的数据 移动到 存储占比小的datanode节点上
将node1的数据块 移动 node2上 底层网络传输
将node1上的数据经过网络传输 传递给 node2再将node1上的删除
默认情况下这个带宽是很小的
<property>
<name>dfs.datanode.balance.bandwidthPerSec</name>
<value>1048576</value>
<description>
Specifies the maximum amount of bandwidth that each datanode
can utilize for the balancing purpose in term of
the number of bytes per second.
</description>
</property>
默认带宽 1m/s
默认的负载均衡如果集群中的节点很少的 默认的负载均衡完全没问题的
如果集群中的节点很多的时候 默认的负载均衡很难达到需求了
手动启动负载
start-balancer.sh -t 10%
注意:
1)这个命令不会立即执行 类似于jvm垃圾回收
提醒集群空闲的时候 立即执行 加快执行效率
2)-t 10% 代表我们可接受的最高值和最小值的差