HBase同步復(fù)制

2018-08-08 11:20 更新

HBase同步復(fù)制背景

HBase中的當(dāng)前的異步復(fù)制。因此,如果主集群崩潰,則從屬集群可能沒有最新數(shù)據(jù)。如果用戶想要強(qiáng)一致性,那么他們就無法切換到從屬集群。

設(shè)計

請參閱HBASE-19064上的設(shè)計文檔

運行和維護(hù)

Case.1設(shè)置兩個同步復(fù)制集群
  • 在源集群和對等集群中添加同步對等體。

對于源集群:

hbase> add_peer  '1', CLUSTER_KEY => 'lg-hadoop-tst-st01.bj:10010,lg-hadoop-tst-st02.bj:10010,lg-hadoop-tst-st03.bj:10010:/hbase/test-hbase-slave', REMOTE_WAL_DIR=>'hdfs://lg-hadoop-tst-st01.bj:20100/hbase/test-hbase-slave/remoteWALs', TABLE_CFS => {"ycsb-test"=>[]}

對于對等集群:

hbase> add_peer  '1', CLUSTER_KEY => 'lg-hadoop-tst-st01.bj:10010,lg-hadoop-tst-st02.bj:10010,lg-hadoop-tst-st03.bj:10010:/hbase/test-hbase', REMOTE_WAL_DIR=>'hdfs://lg-hadoop-tst-st01.bj:20100/hbase/test-hbase/remoteWALs', TABLE_CFS => {"ycsb-test"=>[]}

對于同步復(fù)制,當(dāng)前實現(xiàn)要求源和對等集群具有相同的對等ID。另一件需要注意的事情是:對等體不支持集群級,命名空間級或cf級復(fù)制,現(xiàn)在只支持表級復(fù)制。

  • 將對等集群轉(zhuǎn)換為STANDBY狀態(tài)
    hbase> transit_peer_sync_replication_state '1', 'STANDBY'
  • 將源群集轉(zhuǎn)換為ACTIVE狀態(tài)
    hbase> transit_peer_sync_replication_state '1', 'ACTIVE'

現(xiàn)在,已成功設(shè)置同步復(fù)制。HBase客戶端只能請求源集群,如果請求到對等集群,則現(xiàn)在處于STANDBY狀態(tài)的對等集群將拒絕讀/寫請求。

Case.2備用集群崩潰時的操作方法

如果備用群集已崩潰,則無法為活動群集寫入遠(yuǎn)程WAL。所以我們需要將源集群轉(zhuǎn)移到DOWNGRANDE_ACTIVE狀態(tài),這意味著源集群將不再寫任何遠(yuǎn)程WAL,但正常復(fù)制(異步復(fù)制)仍然可以正常工作,它會對新寫入的WAL進(jìn)行排隊,但是復(fù)制塊直到對等集群返回。

hbase> transit_peer_sync_replication_state '1', 'DOWNGRADE_ACTIVE'

一旦對等集群返回,我們就可以將源集群轉(zhuǎn)移到ACTIVE,以確保復(fù)制是同步的。

hbase> transit_peer_sync_replication_state '1', 'ACTIVE'
Case.3活動集群崩潰時的操作方法

如果活動集群已崩潰(現(xiàn)在可能無法訪問),那么讓我們將備用集群轉(zhuǎn)移到DOWNGRANDE_ACTIVE狀態(tài),之后,我們應(yīng)該將所有請求從客戶端重定向到DOWNGRADE_ACTIVE集群。

hbase> transit_peer_sync_replication_state '1', 'DOWNGRADE_ACTIVE'

如果崩潰的集群再次返回,我們只需要將其直接轉(zhuǎn)移到STANDBY。否則,如果將集群傳輸?shù)紻OWNGRADE_ACTIVE,則原始ACTIVE群集可能具有與當(dāng)前ACTIVE集群相比的冗余數(shù)據(jù)。因為我們設(shè)計的是同時編寫源集群WAL和遠(yuǎn)程集群WAL,所以源集群WALs可能比遠(yuǎn)程集群具有更多數(shù)據(jù),這導(dǎo)致數(shù)據(jù)不一致。將ACTIVE轉(zhuǎn)換為STANDBY的過程沒有問題,因為我們將跳過重放原始的WAL。

hbase> transit_peer_sync_replication_state '1', 'STANDBY'

然后,我們現(xiàn)在可以將DOWNGRADE_ACTIVE集群提升為ACTIVE,以確保復(fù)制是同步的。

hbase> transit_peer_sync_replication_state '1', 'ACTIVE'
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號