hadoop_book/hdfs/router启动详解.md

127 lines
2.8 KiB
Markdown
Raw 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的水平扩展性问题社区从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://pan.zeekling.cn/zeekling/hadoop/router/router_0001.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