【发布时间】:2011-12-14 17:43:45
【问题描述】:
我的情况如下:我有一个包含 3 个 ZooKeeper 的 20 节点 Hadoop/HBase 集群。我通过 MapReduce 对从 HBase 表到其他 HBase 表的数据进行了大量处理。
现在,如果我创建一个新表,并告诉任何作业将该表用作输出接收器,它的所有数据都会进入同一个区域服务器。如果只有几个区域,这不会让我感到惊讶。我有一个特定的表有大约 450 个区域,现在问题来了:这些区域中的大多数(大约 80%)都在同一个区域服务器上!
我现在想知道 HBase 如何在整个集群中分配新区域的分配,以及这种行为是正常/理想还是错误。不幸的是,我不知道从哪里开始查找代码中的错误。
我问的原因是这会使工作变得异常缓慢。只有当作业完全完成时,表才会在集群中保持平衡,但这并不能解释这种行为。 HBase 不应该在创建时将新区域分配到不同的服务器吗?
感谢您的输入!
【问题讨论】: