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