文章目录
一、Hadoop2.0架构
1.架构图
以上是hadoop2.0的架构图,根据hadoop1.0的不足,改进而来。
1.NameNode节点,由原先的一个变成两个,解决单点故障问题
2.JournalNode集群,处理EditLog将原先的SecondaryNode的工作接手过来,同时保证了一致性,避免由宕造成数据不统一
3.DataNode节点,所有的DataNode同时向两个NameNode汇报数据信息
4.FailoverController,处于NameNode上的一个单独的进程,负责NameNode的主备切换,避免但节点故障
5.ZK集群,确保NameNode主节点的唯一性,避免出现双主的情况
2.HA
1)NameNode主备切换
在NameNode启动的时候,会在节点上启动一个ZKFailoverController独立进程(以下简写ZKFC);改进程启动时,会创建HeathMonitor(以下简写HM)和ActiveStandbyElector(以下简写ASE)两个组件,并在两个组件中注册对应的回调方法。
1⃣️:HM初始化完成后,调用NameNode的HAServiceProtocolRPC方法,对NameNode进行健康检查,主要检查NameNode的两种状态:
HealthMonitor.State
HealthMonitor.State 是通过 HAServiceProtocol RPC 接口的 monitorHealth 方法来获取的,反映了 NameNode 节点的健康状况,主要是磁盘存储资源是否充足。
NITIALIZING:HealthMonitor 在初始化过程中,还没有开始进行健康状况检测;
SERVICE_HEALTHY:NameNode 状态正常;
SERVICE_NOT_RESPONDING:调用 NameNode 的 monitorHealth 方法调用无响应或响应超时;
SERVICE_UNHEALTHY:NameNode 还在运行,但是 monitorHealth 方法返回状态不正常,磁盘存