HDFS集群的平衡

来源:互联网 发布:网络心灵鸡汤段子 编辑:程序博客网 时间:2024/04/29 05:56

文件块在集群中均匀分布的好处---HDFS能达到最佳工作性能,一个负载不均衡的集群可能影响MapReduce的本地化优势,为负载搞的数据节点带来更大的压力。

1. 选用默认的每个节点20个map来运行distcp来进行数据复制,可以避免不均衡的情况。总之让map的数量多于集群中节点的数量。

2. 均衡器程序是hadoop的一个守护进程,用来重新分布块,具体做法是遵循块副本放置策略(把块副本放在不同机架上以减少数据丢失)的同时,把块从使用过度的数据节点移到使用不足的数据节点。移动块直到集群任务趋于平衡,这意味着每个数据节点的使用率(在节点上使用的空间占节点整体负载能力的比率)于集群使用率(在集群上使用的空间占集群整体负载能力的比率)之差要在指定百分比以下。使用%start -balancer.sh来启动均衡器程序,-threshold参数指定百分比来保证集群的负载均衡。在任何时间,每个集群上只能运行一个均衡器。均衡器一直运行,直到集群区域均衡为止。

3. 副本放置策略
第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太满或者太忙的node)。
第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。
第三个副本和第二个在同一个机架,随机放在不同的node中。
如果还有更多的副本就随机放在集群的node里。
Hadoop的副本放置策略在可靠性(block在不同的机架)和带宽(一个管道只需要穿越一个网络节点)中做了一个很好的平衡。下图是备份参数是3的情况下一个管道的三个datanode的分布情况。