登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
Kerberos服务介绍与部署
Hadoop HA简介
HDFS手动故障转移
HDFS手动故障转移示例
HDFS自动故障转移
YARN自动故障转移
Hadoop白名单与扩容
HDFS存储优化-纠删码
HDFS冷热存储分离
HDFS慢磁盘监控
HDFS小文件归档
源码分析-NN启动(一)
源码分析-NN启动(二)
源码分析-NN启动(三)
热门推荐>>>
中台架构
中台建设与架构
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Hadoop
>>
Hadoop HA简介
Hadoop HA简介
2020-06-30 23:40:40 星期二 阅读:2122
首先了解下Hadoop集群脑裂(SB)问题: Split Brain指的是具有HA功能的Hadoop集群有两台NameNode处于active状态,导致DataNode不知道具体跟谁通讯,从而导致集群不可用。为了防止脑裂问题,引入Zookeeper来实现HA高可用。 Hadoop HA包含`HDFS HA`与 `Yarn HA` ####手动切换HA集群 当nn1(active)挂掉时,如果要手动切换nn2为active状态,则需要先把nn1启动起来(启动后会自动变为standby),才能把nn2切换为active状态。因为切换nn2状态的时候,nn2会去与nn1进行通信,确保nn1是standby状态。如果nn1没有启动起来,nn2没法获取nn1的状态,由于Hadoop的防止脑裂功能,手动没办法把nn2切换为active状态(因为Hadoop认为,没法与nn1通信,并不代表nn1挂了,可能是网络等其他问题) 注意:这里说的是手动切换主节点的情况,如果是使用Zookeeper自动切换机制,则不需要把nn1启动起来也能自动把nn2变为active状态 ####自动切换HA集群 手动的存在一个问题,就是必须要把挂掉的另一台启动起来。在生产中,如果真的启动不了,其实HA集群也不是高可靠的。所以,在企业中都是使用自动切换的方式来实现HA 通过手动切换的方式我们知道,要实现自动切换,则需要除两台NameNode以外的第三方来实现以下两个功能 监控active 节点的状态 当发现active节点挂掉时自动拉起standby节点 这个第三方,在实际生产中采用的是Zookeeper,zk里面存储谁是active,谁是standby。具体是在两台NameNode上启动zkfc线程检测所在节点上的NameNode是否健康。同时zkfc进程还会启动另一个线程zookeeper-based-election(在集群刚启动或者两台NameNode都是standby时,用来选出谁是active) 注意:zkfc并不是zookeeper的进程,而是Hadoop自带的进程 ####自动切换的步骤 `检测到假死`:当active节点(假设为nn1)所在的zkfc进程与本机NameNode进程无法通信时,该nn1就会被标记为假死(因为只是zkfc进程无法与NameNode通讯,可能NameNode还是好的)。 `强行杀死active节点`:nn1节点上的zkfc进程会与standby节点上(nn2)的zkfc进程通信,让nn2的zkfc进程强行把nn1节点的NameNode进程杀死。(如果不杀死,可能会导致集群脑裂,所以顺便补刀) `激活standby(节点)`