同一行的列族属于同一 RegionServer。那么,这里的问题是 RegionServer 会在不同的机器上存储不同的列族吗?
问问题
2280 次
2 回答
5
不是必须的,但在某些时候会。这是基本 HBase 架构的一部分。如果您将 HBase 表想象为具有其行和列的电子表格,则一个区域在一个方向上跨越多个连续行以及一个或多个列族的所有列。这样,整张纸都被区域瓷砖覆盖。
每个区域都存储在一个或多个(通常是三个)集群节点上。(如果您一次丢失包含特定区域的所有节点,您将丢失该区域的所有数据。如果您只丢失一个副本,HBase 会确保将其从剩余副本复制到另一个节点。)
现在,当某个区域中包含的数据变得太大时,HBase 会自动启动区域拆分,从而产生两个新区域,每个区域包含一半的数据。只有通过区域拆分(除了区域复制)数据才能最终分布在 HBase 集群上。
将一行的数据存储在同一列族的不同列中可确保数据一起存储在一个位置。
于 2011-02-26T16:15:41.620 回答
0
如果 table 中的数据足够大,HBase 会将 table 拆分到不同的区域。因为 HBase 是面向列的 DB,所以不同的列族会存储在不同的区域。
于 2013-07-25T11:56:09.240 回答