HBase:复制如何工作?

时间:2011-03-24 10:14:20

标签: hadoop hbase

我目前正在评估HBase作为数据存储区,但有一个问题没有答案:HBase在许多节点上存储了同一对象的许多副本(又称复制)。由于HBase具有所谓的强一致性(与最终一致相对应),因此它保证每个副本在读取时返回相同的值。

根据我对HBase概念的理解,在读取值时,首先要查询HBase主服务器(必须有多个)提供数据的RegionServer。然后,我可以在没有主发明的情况下发出读写请求。那么复制如何运作?

  • HBase如何提供一致性?
  • 内部写入操作如何工作?
  • 写入操作阻塞,直到写入所有副本(=>同步复制)。如果是,谁管理此转移?
  • HDFS如何进入游戏?

我已经阅读了 BigTable -Paper并搜索了文档,但我没有找到有关HBase架构的更多信息。

谢谢!

1 个答案:

答案 0 :(得分:20)

hbase不会按照您的想法进行任何复制。它构建于HDFS之上,为组成hbase表的数据块提供复制。但是,只有一个区域服务器为任何给定的行提供或写入数据。

通常,regionservers与数据节点共存。 HDFS中的所有数据写入首先进入本地节点(如果可能),另一个节点位于同一机架上,另一个节点位于不同的机架上(HDFS中复制因子为3)。因此,区域服务器最终将以本地服务器提供的所有数据结束。

至于阻塞:唯一的阻塞是直到WAL(预写日志)被刷新到磁盘。这样可以保证不会丢失任何数据,因为日志总是可以重放。请注意,旧版本的hbase没有解决这个问题,因为HDFS直到最近才支持持久的附加操作。目前我们处于一种奇怪的状态,因为没有支持追加和HBase的Hadoop官方Apache版本。在此期间,您可以自己应用附加补丁,也可以使用Cloudera发行版(推荐)。

HBase确实具有相关的复制功能,允许您将数据从一个群集复制到另一个群集。