codecamp

HBase时间轴一致性:将写入传播到区域副本

将写入传播到区域副本

如上所述,在HBase时间轴一致性中,写入只转到主要区域副本。为了将写入从主区域副本传播到次区域,有两种不同的机制。对于只读表,您不需要使用以下任何方法。禁用和启用表格应使数据在所有区域副本中可用。对于可变的表,你必须仅使用下列机制之一:storefile刷新,或异步WAL复制。建议使用后者。

StoreFile复习

第一种机制是在HBase-1.0 +中引入的存储文件刷新。存储文件刷新是每个区域服务器的一个线程,该服务器定期运行,并为辅助区域副本的主区域的存储文件执行刷新操作。如果启用,刷新器将确保次要区域副本及时查看来自主要区域的新刷新,压缩或批量加载的文件。但是,这意味着只有刷新的数据可以从辅助区域副本读取,并且在刷新完成后,使辅助数据在较长的时间内落后于主数据库。

要打开此功能,您应该将hbase.regionserver.storefile.refresh.period配置为非零值。参见下面的配置部分。

Asnyc WAL复制

写入副本的第二种机制是通过“异步WAL复制”功能完成的,并且仅在HBase-1.1 +中可用。这与HBase的多数据中心复制类似,但是来自区域的数据被复制到次要区域。每个辅助副本总是按照主区域提交的顺序接收和观察写入。从某种意义上说,这种设计可以被认为是“群集内复制”,不是将数据复制到不同的数据中心,而是将数据转移到次要区域,以保持次区域的内存中状态是最新的。数据文件在主区域和其他副本之间共享,因此没有额外的存储开销。但是,次要区域的内存中会有近期未刷新的数据,这增加了内存开销。主要区域也将清除,压缩和批量加载事件写入其WAL,这些事件也通过wal复制复制到辅助节点。当他们观察到刷新/压实或批量加载事件时,次要区域重放该事件以拾取新文件并丢弃旧文件。

以与主服务器相同的顺序提交写入操作可确保次服务器不会偏离主要区域数据,但由于日志复制是异步的,因此数据在次要区域中可能仍旧过时。由于此功能可用作复制端点,因此预计性能和延迟特征与群集间复制类似。

异步WAL复制默认是禁用的。您可以通过设置hbase.region.replica.replication.enabled为true来启用此功能。当您首次创建区域复制>1的表时,Asyn WAL复制功能将添加一个名为region_replica_replication复制对等点的新复制对等点。启用后,如果要禁用此功能,则需要执行两项操作:(1)将配置属性hbase.region.replica.replication.enabled设置为false hbase-site.xml(请参见下面的配置部分);(2)使用hbase shell或Adminclass禁用集群中指定的复制对等点region_replica_replication:

hbase> disable_peer 'region_replica_replication'
HBase时间轴一致性的权衡取舍
HBase时间轴一致性:存储文件TTL
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

HBase快速入门

HBase批量加载

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }