Chinaunix首页 | 论坛 | 博客
  • 博客访问: 847738
  • 博文数量: 366
  • 博客积分: 10267
  • 博客等级: 上将
  • 技术积分: 4290
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:04
文章分类

全部博文(366)

文章存档

2012年(366)

分类: 系统运维

2012-03-01 17:13:06

摘自:文件块在集群中均匀分布的好处---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的分布情况。

摘自:daniel的专栏

阅读(1034) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~