hadoop_book/common/zk_failover.md

57 lines
1.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 简介
HDFS的NameNode、Yarn的ResourceManager都是依靠ZK实现主备倒换的。核心的类为ZKFailoverController.java,
选举的核心类为ActiveStandbyElector.java
## 主备选举
主备选举的核心类是ActiveStandbyElector。在初始化的时候需要创建zk连接并且尝试在zk上面创建文件。在创建连接或者创建文件的时候都会有回调事件。
回调处理的函数主要包含:
### 创建node节点回调
入口函数如下:
```java
public synchronized void processResult(int rc, String path, Object ctx,
String name) {
// .....
}
```
处理流程图如下:
![zk_failver_001](https://pan.zeekling.cn//zeekling/hadoop/common/zk_failover_001.png)
### 监控回调
入口函数如下:
```java
public synchronized void processResult(int rc, String path, Object ctx,
Stat stat) {
// ...
}
```
处理流程如下:
![zk_failver_003](https://pan.zeekling.cn//zeekling/hadoop/common/zk_failover_003.png)
### 事件回调
入口函数如下:
```java
synchronized void processWatchEvent(ZooKeeper zk, WatchedEvent event) {
// ..
}
```
![zk_failver_002](https://pan.zeekling.cn//zeekling/hadoop/common/zk_failover_002.png)