【发布时间】:2010-11-22 10:10:44
【问题描述】:
同一行的列族属于同一 RegionServer。 那么,这里的问题是 RegionServer 会在不同的机器上存储不同的列族吗?
【问题讨论】:
标签: hbase
同一行的列族属于同一 RegionServer。 那么,这里的问题是 RegionServer 会在不同的机器上存储不同的列族吗?
【问题讨论】:
标签: hbase
不一定,但在某些时候会。这是基本 HBase 架构的一部分。如果您将 HBase 表想象为具有其行和列的电子表格,则一个区域在一个方向上跨越多个连续行以及一个或多个列族的所有列。 这样,整个工作表都被区域瓷砖覆盖。
每个区域都存储在一个或多个(通常是三个)集群节点上。 (如果您一次释放包含特定区域的所有节点,您将丢失该区域的所有数据。如果您只丢失一个副本,HBase 会确保将其从剩余副本复制到另一个节点。)
现在,当某个区域中包含的数据变得太大时,HBase 会自动启动区域拆分,从而产生两个新区域,每个区域包含一半的数据。只有通过区域拆分(除了区域复制)数据才能最终分布在 HBase 集群上。
将一行的数据存储在同一列族的不同列中可确保将数据一起存储在一个位置。
【讨论】:
如果表中的数据足够大,HBase 会将表拆分到不同的区域。因为HBase是面向列的DB,所以不同的列族会存储在不同的区域。
【讨论】: