hadoop集群的可扩展性和负载均衡
2019-10-10 本文已影响0人
alexlee666
一、hadoop集群的可扩展性
Hadoop集群具有如下主要特征:
- 高容错性:数据备份;
- 高扩展性:增添或者删除DataNode(支持热插拔,即无需重新启动集群),都会通知NameNode及时更新metadata;
- 数据读写:对于上传到HDFS的文件支持单用户追加写,不支持修改,不支持多用户同时执行写操作;适合一次写入,多次读取的场景。
因此Hadoop集群:
- 适用于大文件的批处理;
- 不适用于大量小文件的实时流处理(大量小文件会占据太多的NameNode内存空间,数据访问延迟较高);
二、hadoop集群的负载均衡
2.1 什么是负载均衡
当向新增或者删除某个DataNode节点时,很容易出现不同DataNode节点的磁盘空间使用率出现不均等情况,比如大多数节点磁盘使用率为基本在30%,但是个别节点磁盘使用率达到90%以上。
2.2 负载不均衡导致的问题
比如:MR程序无法很好地利用本地计算的优势,机器之间无法达到更好的网络带宽使用率等等。
2.3 如何解决负载不均衡问题?
2.3.1 使用HDFS自带的Balancer
影响Balancer的两个参数:
-
threshold:
默认设置:10,参数取值范围:0-100
参数含义:判断集群是否平衡的阈值。理论上,该参数设置的越小,整个集群就越平衡 -
dfs.balance.bandwidthPerSec:
默认设置:1048576(1M/S)
参数含义:Balancer运行时允许占用的带宽
在hdfs-site.xml文件中可以设置数据均衡占用的网络带宽限制:
<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>1048576</value>
<description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description>
</property>
执行Hadoop自带的start-balancer.sh脚本可以完成负载的重均衡,示例如下:
#启动数据均衡,默认阈值为 10%
$Hadoop_home/bin/start-balancer.sh
#启动数据均衡,阈值 5%
bin/start-balancer.sh –threshold 5
#停止数据均衡
$Hadoop_home/bin/stop-balancer.sh
参考:https://community.cloudera.com/t5/Support-Questions/Load-balancing/td-p/107811