Ubuntu环境下Hadoop高可用性(HA)实现指南
Hadoop高可用性(HA)旨在消除NameNode(HDFS核心元数据管理节点)和ResourceManager(YARN资源调度节点)的单点故障(SPOF),通过主备节点+共享存储+自动故障转移机制,确保集群持续提供服务。以下是Ubuntu系统下的具体实现步骤及关键要点:
一、前置准备
-
环境要求
- 至少4台Ubuntu服务器(如node1~node4),分别用于部署NameNode(2台,主备)、ResourceManager(2台,主备)、JournalNode(3台,QJM集群)、ZooKeeper(3台,协调集群)、DataNode(多台,数据存储)、NodeManager(多台,资源执行)。
- 所有节点安装OpenJDK 8(
sudo apt-get install openjdk-8-jdk)。 - 配置SSH无密码登录(主备节点间互相免密,便于自动故障转移):
# 在主节点生成密钥对 ssh-keygen -t rsa # 将公钥复制到所有从节点 ssh-copy-id node2 ssh-copy-id node3 # 测试无密码登录 ssh node2 - 配置主机名与IP映射(编辑
/etc/hosts,避免DNS依赖):192.168.1.101 node1 192.168.1.102 node2 192.168.1.103 node3 192.168.1.104 node4
-
Hadoop基础安装
- 下载Hadoop 3.x稳定版(如3.3.4),解压至
/usr/local/hadoop:tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/ ln -s /usr/local/hadoop-3.3.4 /usr/local/hadoop - 配置环境变量(
~/.bashrc):export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source ~/.bashrc
- 下载Hadoop 3.x稳定版(如3.3.4),解压至
二、HDFS高可用(HA)配置
HDFS HA通过Active/Standby NameNode和JournalNode集群实现元数据同步,核心配置文件为core-site.xml和hdfs-site.xml。
1. 关键配置文件修改
-
core-site.xml(所有节点):
定义HDFS逻辑集群名称及ZooKeeper集群地址(用于故障转移协调):<property> <name>fs.defaultFSname> <value>hdfs://myclustervalue> property> <property> <name>ha.zookeeper.quorumname> <value>node1:2181,node2:2181,node3:2181value> property> -
hdfs-site.xml(所有节点):
配置NameNode主备角色、共享存储(JournalNode)、自动故障转移等:<property> <name>dfs.nameservicesname> <value>myclustervalue> property> <property> <name>dfs.ha.namenodes.myclustername> <value>nn1,nn2value> property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1name> <value>node1:8020value> property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2name> <value>node2:8020value> property> <property> <name>dfs.namenode.shared.edits.dirname> <value>qjournal://node1:8485;node2:8485;node3:8485/myclustervalue> property> <property> <name>dfs.ha.automatic-failover.enabledname> <value>truevalue> property> <property> <name>ha.zookeeper.quorumname> <value>node1:2181,node2:2181,node3:2181value> property> <property> <name>dfs.ha.fencing.methodsname> <value>sshfencevalue> property> <property> <name>dfs.ha.fencing.ssh.private-key-filesname> <value>/home/ubuntu/.ssh/id_rsavalue> property>
2. 启动JournalNode集群
JournalNode负责存储NameNode的Edits日志(元数据变更记录),需在3台节点上启动:
# 在每台JournalNode节点执行
hdfs --daemon start journalnode
# 检查状态
jps | grep JournalNode
3. 初始化共享存储
在其中一台NameNode(如node1)上执行,将本地元数据同步到JournalNode:
# 格式化NameNode(首次配置需执行)
hdfs namenode -format
# 初始化共享Edits日志
hdfs namenode -initializeSharedEdits
4. 启动HDFS并验证
- 启动JournalNode(已在步骤2完成)。
- 启动NameNode(先启动Active节点,如node1):
start-dfs.sh - 查看NameNode状态(
jps命令),确认NameNode进程运行。 - 模拟故障:杀死node1上的NameNode进程,在node2上会自动触发故障转移,node2成为新的Active节点。
三、YARN高可用(HA)配置
YARN HA通过Active/Standby ResourceManager和ZooKeeper实现资源调度的高可用,核心配置文件为yarn-site.xml。
1. 关键配置文件修改
- yarn-site.xml(所有节点):
配置ResourceManager主备角色、ZooKeeper集群地址及状态存储:<property> <name>yarn.resourcemanager.ha.enabledname> <value>truevalue> property> <property> <name>yarn.resourcemanager.cluster-idname> <value>yarn-clustervalue> property> <property> <name>yarn.resourcemanager.ha.rm-idsname> <value>rm1,rm2value> property> <property> <name>yarn.resourcemanager.hostname.rm1name> <value>node3value> property> <property> <name>yarn.resourcemanager.hostname.rm2name> <value>node4value> property> <property> <name>yarn.resourcemanager.zk-addressname> <value>node1:2181,node2:2181,node3:2181value> property> <property> <name>yarn.resourcemanager.ha.automatic-failover.enabledname> <value>truevalue> property>
2. 启动YARN并验证
- 启动ResourceManager(在node3和node4上分别启动):
start-yarn.sh - 查看ResourceManager状态(
jps命令),确认ResourceManager进程运行。 - 模拟故障:杀死node3上的ResourceManager进程,node4会自动提升为Active节点。
四、验证高可用性
-
HDFS验证
- 访问HDFS Web UI(
http://node1:9870),查看NameNode状态(Active/Standby)。 - 模拟Active NameNode宕机,观察Standby节点是否自动切换为Active。
- 访问HDFS Web UI(
-
YARN验证
- 访问YARN Web UI(
http://node3:8088),查看ResourceManager状态(Active/Standby)。 - 提交测试作业(
hadoop jar hadoop-mapreduce-examples-3.3.4.jar pi 10 100),模拟Active RM宕机,观察作业是否继续执行。
- 访问YARN Web UI(
五、关键注意事项
- JournalNode数量:至少3台(奇数),遵循Paxos协议保证一致性,容忍最多1台节点故障。
- ZooKeeper集群:同样需要奇数节点(3或5台),避免脑裂问题。
- 数据备份:定期备份HDFS数据目录(
/usr/local/hadoop/data)和ZooKeeper数据目录(/var/lib/zookeeper)。 - 监控告警:使用Prometheus+Granafa监控集群状态,设置NameNode、ResourceManager宕机告警。
通过以上步骤,Ubuntu环境下的Hadoop集群可实现HDFS NameNode和YARN ResourceManager的高可用,确保集群在节点故障时快速恢复,保障大数据处理的连续性。
以上就是关于“Ubuntu Hadoop 高可用性如何实现”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm