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