【问题标题】:Will HBase store column families for the same row in different machine?HBase 会在不同机器上存储同一行的列族吗?
【发布时间】:2010-11-22 10:10:44
【问题描述】:

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

【问题讨论】:

    标签: hbase


    【解决方案1】:

    不一定,但在某些时候会。这是基本 HBase 架构的一部分。如果您将 HBase 表想象为具有其行和列的电子表格,则一个区域在一个方向上跨越多个连续行以及一个或多个列族的所有列。 这样,整个工作表都被区域瓷砖覆盖。

    每个区域都存储在一个或多个(通常是三个)集群节点上。 (如果您一次释放包含特定区域的所有节点,您将丢失该区域的所有数据。如果您只丢失一个副本,HBase 会确保将其从剩余副本复制到另一个节点。)

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

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

    【讨论】:

    • “每个区域都存储在一个或多个节点上”我认为您的意思是复制,但是对于一个区域本身不会跨越多个节点。所以我对这个问题的回答是同一行不会存放在不同的机器中
    【解决方案2】:

    如果表中的数据足够大,HBase 会将表拆分到不同的区域。因为HBase是面向列的DB,所以不同的列族会存储在不同的区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多