我知道hbase有wal和hfile的复制品,但所有这些都作为持久性存储在hdfs中。hbase也将提供区域级副本。我们知道region包含blockcache和memcache,如果只有一个region示例处理请求,hbase如何解决热点请求。另外,如果只有一个区域示例,hbase将始终保持一致性,对吗?因为所有的读者只是从一个区域读取数据,他们总是看到相同的数据?谢谢!
fykwrbwg1#
最新版本的hbase有一个称为“区域复制”的功能。对于表的每个区域,可以在不同的区域服务器中打开多个副本。默认情况下,区域复制设置为1,因此仅部署单个区域副本,并且与原始模型没有任何更改。如果区域复制设置为2或更多,则主服务器将分配表中区域的副本。负载平衡器可确保区域副本不在同一区域服务器和同一机架(如果可能)中共同托管。要启用,请设置 hbase.region.replica.replication.enabled to true 在hbase-site.xml中。创建具有区域高可用性的表:
hbase.region.replica.replication.enabled to true
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'}
有关更多详细信息,请参阅
1条答案
按热度按时间fykwrbwg1#
最新版本的hbase有一个称为“区域复制”的功能。
对于表的每个区域,可以在不同的区域服务器中打开多个副本。默认情况下,区域复制设置为1,因此仅部署单个区域副本,并且与原始模型没有任何更改。如果区域复制设置为2或更多,则主服务器将分配表中区域的副本。负载平衡器可确保区域副本不在同一区域服务器和同一机架(如果可能)中共同托管。
要启用,请设置
hbase.region.replica.replication.enabled to true
在hbase-site.xml中。创建具有区域高可用性的表:
hbase为get或scan操作提供了一致性模型。
consistency.strong是hbase提供的默认一致性模型。如果一个表的region replication=1,或者有region replicas,但读取是在启用了时间一致性的情况下完成的,那么读取总是由主区域执行
查询辅助区域:
用于扫描
有关更多详细信息,请参阅