W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
在架構(gòu)上,HBase從一開始就始終具有強(qiáng)大的一致性保證。所有讀取和寫入操作都通過單個區(qū)域服務(wù)器進(jìn)行路由,這可以確保所有寫入都按照順序進(jìn)行,并且所有讀取操作都可以看到最近提交的數(shù)據(jù)。
但是,由于將這些讀取單個歸位到單個位置,因此如果服務(wù)器變得不可用,則在區(qū)域服務(wù)器中托管的表區(qū)域?qū)⒃谝欢螘r間內(nèi)變得不可用。區(qū)域恢復(fù)過程中有三個階段:檢測,分配和恢復(fù)。其中,檢測通常是最長的,目前大約為20-30秒,具體取決于ZooKeeper會話超時時間。在此期間內(nèi),在恢復(fù)完成之前,客戶端將無法讀取區(qū)域數(shù)據(jù)。
但是,對于某些使用情況,數(shù)據(jù)可能是只讀的,或者對某些陳舊的數(shù)據(jù)進(jìn)行讀取是可以接受的。通過時間線一致(Timeline-consistent)的高可用讀取,HBase可以用于這類對延遲敏感的應(yīng)用,這些應(yīng)用可能會在讀取完成時產(chǎn)生時間限制。
為了實(shí)現(xiàn)讀取的高可用性,HBase提供了一個稱為區(qū)域復(fù)制的功能。在此模型中,對于表的每個區(qū)域,將會有多個副本在不同的RegionServers中打開。默認(rèn)情況下,區(qū)域復(fù)制設(shè)置為1,因此只部署單個區(qū)域副本,并且不會從原始模型發(fā)生任何更改。如果區(qū)域復(fù)制設(shè)置為2或更多,則主服務(wù)器將分配表的區(qū)域副本。Load Balancer確保區(qū)域副本不共同托管在相同的區(qū)域服務(wù)器中,并且也位于同一機(jī)架中(如果可能)。
所有單個區(qū)域的副本將具有唯一的replica_id,從0開始。具有replica_id == 0的區(qū)域副本稱為主區(qū)域,其他次要區(qū)域或輔助。只有主服務(wù)器可以接受來自客戶端的寫入,主服務(wù)器將始終包含最新的更改。由于所有寫入操作都必須經(jīng)過主要區(qū)域,因此寫入操作的可用性不高(意思是說,如果區(qū)域不可用,它們可能會阻塞一段時間)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: