HDFS如何保證高可用性

2021-09-27 12:53:10 字數 1045 閱讀 2706

1、實現方式

namenode冗餘備份

2、具體過程

多個節點作為namenode,其中乙個處於active狀態,其它處於standby狀態。目前的實現有乙個條件,需要借助類似nfs這樣的分布式共享儲存系統,而且節點要能夠訪問這一系統。

在active的namespace上的每個改變,需要同步到處於standby狀態的節點。怎麼同步?active節點會週期性的將修改做日誌到乙個共享目錄下的edit log file中,而standby節點持續監控該目錄,一有更新,就會拿過來應用到自己的namespace中。當active節點的namenode掛掉之後,其它節點會確保先把namenode節點產生的修改都應用到自己的namespace中再進行替換操作。

3、快速恢復機制

4、fencing process

如果很久沒有收到namenode對edit log file做修改記錄的操作。那namenode是掛了還是網路問題延時了?在不能確定的情況下,顯然不能直接進行備胎同步完edit log file修改之後轉正的操作。因為如果備胎讀完了edit log file的修改,開始轉正過程中,之前的namenode又往edit log file中寫修改日誌豈不是亂套了!所以,隔離線程就是阻斷這一操作的。如果發生了問題,又不能確定namenode是不是掛了的情況下,隔離線程阻止namenode再往共享檔案edit log file中新增日誌。

hdfs自動故障轉移需要借助zookeeper來實現。乙個是需要進行失敗探測,乙個是需要進行active節點擊舉。

1、需要額外的兩個元件

2、失敗探測

每個namenode都會在zookeeper中持有乙個持久的session,如果namenode掛了,session就失效了,這個時候就通知其它備胎需要進行failover了。

3、namenode選舉

zookeeper選舉namenode的機制比較簡單,就是獲取lock,誰先獲取到,誰就成為下乙個active的namenode。

主要的工作由zkfc程序來完成,zkfc相當於zookeeper客戶端,每個namenode節點都會執行乙個zkfc程序,其主要職責總結一下:

如何保證訊息佇列高可用性?

當前位置 home mq 如何保證訊息佇列高可用性?rabbitmq的高可用性 rabbitmq 是比較有代表性的,因為是基於主從 非分布式 做高可用性 三種模式 單機模式 普通集群模式 映象集群模式 單機模式 是demo級別 普通集群模式 無高可用性 再多台機器上啟動多個rabbitmq例項。每台...

如何保證MQ的高可用性?

1 面試題 如何保證訊息佇列的高可用啊?2 面試官心理分析 如果有人問到你mq的知識,高可用是必問的,因為mq的缺點,我剛才已經說過了,有好多,導致系統可用性降低,等等。所以只要你用了mq,接下來問的一些要點肯定就是圍繞著mq的那些缺點怎麼來解決了。要是你傻乎乎的就乾用了乙個mq,各種問題從來沒考慮...

如何保證訊息佇列的高可用性?

1 rabbitmq的高可用性 rabbitmq是比較有代表性的,因為是基於高可用性的,以下是它的高可用性的實現。1.普通集群模式 在多台機器上啟動多個rabbitmq例項,每個機器啟動乙個。但是你建立的queue只會放在乙個rabbitmq例項上,但是每個例項都同步queue的元資料。完了你消費的...