hbase有区域复制吗

apeeds0o  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(509)

我知道hbase有wal和hfile的复制品,但所有这些都作为持久性存储在hdfs中。hbase也将提供区域级副本。我们知道region包含blockcache和memcache,如果只有一个region示例处理请求,hbase如何解决热点请求。
另外,如果只有一个区域示例,hbase将始终保持一致性,对吗?因为所有的读者只是从一个区域读取数据,他们总是看到相同的数据?谢谢!

fykwrbwg

fykwrbwg1#

最新版本的hbase有一个称为“区域复制”的功能。
对于表的每个区域,可以在不同的区域服务器中打开多个副本。默认情况下,区域复制设置为1,因此仅部署单个区域副本,并且与原始模型没有任何更改。如果区域复制设置为2或更多,则主服务器将分配表中区域的副本。负载平衡器可确保区域副本不在同一区域服务器和同一机架(如果可能)中共同托管。
要启用,请设置 hbase.region.replica.replication.enabled to true 在hbase-site.xml中。
创建具有区域高可用性的表:

CREATE 't1', 'f1', {REGION_REPLICATION => 2}

hbase为get或scan操作提供了一致性模型。

public enum Consistency {
   STRONG,
   TIMELINE
 }

consistency.strong是hbase提供的默认一致性模型。如果一个表的region replication=1,或者有region replicas,但读取是在启用了时间一致性的情况下完成的,那么读取总是由主区域执行
查询辅助区域:

Get get = new Get(row); 
get.setConsistency(CONSISTENCY.TIMELINE);
...
Result result = table.get(get);

用于扫描

scan 't1', {CONSISTENCY => 'TIMELINE'}

有关更多详细信息,请参阅

相关问题