HBase:复制如何工作?

the*_*ega 18 hadoop hbase

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

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

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

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

谢谢!

Dav*_*vid 20

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

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

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

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