增加Router详解

This commit is contained in:
LingZhaoHui 2024-10-07 23:19:35 +08:00
parent f3d28f2d59
commit 3ee6641906
Signed by: zeekling
GPG Key ID: D96E4E75267CA2CC

126
hdfs/router启动详解.md Normal file
View File

@ -0,0 +1,126 @@
# 简介
为了解决HDFS的水平扩展性问题社区从Apache Hadoop 0.23.0版本开始引入了HDFS federation。HDFS Federation是指 HDFS集群可同时存在多个NameNode/Namespace每个Namespace之间是互相独立的
单独的一个Namespace里面包含多个 NameNode其中一个是主剩余的是备这个和上面我们介绍的单Namespace里面的架构是一样的。这些Namespace共同管理整个集群的数据每个Namespace只管理一部分数据之间互不影响。
集群中的DataNode向所有的NameNode注册并定期向这些NameNode发送心跳和块信息同时DataNode也会执行NameNode发送过来的命令。集群中的NameNodes共享所有DataNode的存储资源。HDFS Federation的架构如下图所示
![pic](https://yqfile.alicdn.com/86762f43d19784638401ac4283bc5fa1eeb27be2.png)
# 子模块
## State Store模块
### 初始化
初始化是从类Router的serviceInit函数触发的。
提供开关dfs.federation.router.store.enable默认开启。核心实现类是StateStoreService。
在serviceInit的时候初始化。
初始化store driver通过配置dfs.federation.router.store.driver.class默认为StateStoreZooKeeperImpl.class,通过反射机制初始化。目前默认支持的有:
- StateStoreFileImpl
- StateStoreFileSystemImpl
- StateStoreMySQLImpl
- StateStoreZooKeeperImpl
注册record stores目前支持的有
- MembershipStoreImpl
- MountTableStoreImpl
- RouterStoreImpl
- DisabledNameserviceStoreImpl
所有的record stores都保存在recordStores当中。
```java
// Add supported record stores
addRecordStore(MembershipStoreImpl.class);
addRecordStore(MountTableStoreImpl.class);
addRecordStore(RouterStoreImpl.class);
addRecordStore(DisabledNameserviceStoreImpl.class);
```
初始化定期检查任务
```java
// Check the connection to the State Store periodicallythis
this.monitorService = new StateStoreConnectionMonitorService(this);
this.addService(monitorService);
```
初始化缓存跟新服务
```java
// Cache update service
this.cacheUpdater = new StateStoreCacheUpdateService(this);
addService(this.cacheUpdater);
```
最后是初始化监控信息核心的监控实现bean是StateStoreMBean。
### 启动
启动主要是Router的serviceStart函数触发最终调用StateStoreDriver的init函数用于初始化driver。核心函数为initDriver和initRecordStorage。
#### StateStoreFileImpl
##### initDriver
##### initRecordStorage
#### StateStoreFileSystemImpl
initDriver
initRecordStorage
#### StateStoreMySQLImpl
initDriver
initRecordStorage
#### StateStoreZooKeeperImpl
initDriver
initRecordStorage
## ActiveNamenodeResolver
## subclusterResolver
## RPC
## adminServer
## httpServer
## NameNode Heartbeat
## Router metrics system
## quota relevant service
## Safemode
## mount table cache update
## quota manager