gpt4 book ai didi

hadoop - HBase 如何在整个集群中分配来自 MapReduce 的新区域?

转载 作者:可可西里 更新时间:2023-11-01 14:24:16 26 4
gpt4 key购买 nike

我的情况如下:我有一个 20 节点的 Hadoop/HBase 集群和 3 个 ZooKeepers。我通过 MapReduce 对从 HBase 表到其他 HBase 表的数据进行了大量处理。

现在,如果我创建一个新表,并告诉任何作业使用该表作为输出接收器,它的所有数据都会进入同一个区域服务器。如果只有几个区域,这不会让我感到惊讶。我有一个特定的表有大约 450 个区域,现在问题来了:这些区域中的大部分(大约 80%)都在同一个区域服务器上!

我现在想知道 HBase 如何在整个集群中分配新区域,以及这种行为是正常/期望的还是错误。不幸的是,我不知道从哪里开始查找代码中的错误。

我问的原因是这会使作业变得异常缓慢。只有当作业完全完成时,表才会在集群中保持平衡,但这并不能解释这种行为。 HBase 不应该在创建时将新区域分配给不同的服务器吗?

感谢您的输入!

最佳答案

我认为这是一个已知问题。目前,HBase 将区域作为一个整体分布在整个集群中,而不考虑它们属于哪个表。

查阅 HBase 书籍了解背景: http://hbase.apache.org/book/regions.arch.html

可能是您使用的是旧版本的 hbase: http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/19155

关于负载均衡和区域移动的讨论见下文 http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/12549

关于hadoop - HBase 如何在整个集群中分配来自 MapReduce 的新区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7886317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com