hadoop采用日志隔離雙寫和ZKFC兩個(gè)機(jī)制預(yù)防腦裂。
1. JournalNode集群會為主節(jié)點(diǎn)設(shè)置一個(gè)Epoch并分發(fā)到各個(gè)JN節(jié)點(diǎn),當(dāng)發(fā)生主備切換時(shí),會將Epoch+1賦予新的主節(jié)點(diǎn)和各個(gè)JN節(jié)點(diǎn)
2. JN在接收日志前會檢查主節(jié)點(diǎn)Epoch是否小于自己,如果小于則拒絕寫入。
3. 每個(gè)NN啟動一個(gè)ZKFC進(jìn)程,利用ZK的選舉完成主備選舉,恢復(fù)連接的主節(jié)點(diǎn)會被通知切換為備節(jié)點(diǎn)