HBase会将列系列存储在不同机器的同一行吗?

时间:2010-11-22 10:10:44

标签: hbase

同一行的列族属于同一RegionServer。 那么,这里的问题是RegionServer会在不同的机器中存储不同的列族吗?

2 个答案:

答案 0 :(得分:4)

不是必须的,但在某些时候它会。这是HBase基本架构的一部分。如果将HBase表映像为具有行和列的电子表格,则区域将跨越一个方向上的多个连续行以及一个或多个列族的所有列。 这样,整张纸都覆盖了区域瓷砖。

每个区域存储在一个或多个(通常为三个)群集节点上。 (如果你松开了包含特定区域的所有节点,你就会丢失所有区域的数据。如果你只丢失一个副本,HBase会确保它从剩余的副本复制到另一个节点。)

现在,当一个区域中包含的数据变得太大时,HBase会自动启动一个区域分割,从而产生两个新区域,每个区域包含一半的数据。只有通过区域分割(除了区域复制),数据才会最终分布在HBase集群上。

在同一列族的不同列中存储一行的数据可确保数据一起存储在一个位置。

答案 1 :(得分:0)

如果表中的数据足够大,HBase会将表拆分到不同的区域。由于HBase是面向列的数据库,因此不同的列族将存储在不同的区域中。