HDFS高可用性(HA)配置步骤
1. 集群规划与环境准备
- 角色规划:确定集群中各节点的角色(至少2个NameNode、3个JournalNode、多个DataNode、ZooKeeper集群),建议将NameNode部署在不同物理节点以避免单点故障。
- 备份配置:备份原有
core-site.xml、hdfs-site.xml等配置文件,便于后续恢复。
2. 修改HDFS核心配置文件
2.1 配置hdfs-site.xml
在NameNode节点上编辑hdfs-site.xml,添加以下关键配置:
- 集群命名:
dfs.nameservices(如mycluster),作为集群唯一标识。 - NameNode列表:
dfs.ha.namenodes.mycluster(如nn1,nn2),定义所有NameNode实例名称。 - RPC地址:
dfs.namenode.rpc-address.mycluster.nn1/nn2(如master:8020、slave1:8020),指定每个NameNode的RPC通信地址。 - HTTP地址:
dfs.namenode.http-address.mycluster.nn1/nn2(如master:50070、slave1:50070),指定Web UI访问地址。 - 共享编辑日志:
dfs.namenode.shared.edits.dir(如qjournal://master:8485;slave1:8485;slave2:8485/mycluster),定义JournalNode集群的共享日志路径(用于NameNode间数据同步)。 - JournalNode目录:
dfs.journalnode.edits.dir(如/home/hadoop/journal/data),指定JournalNode本地存储编辑日志的路径。 - 故障转移代理:
dfs.client.failover.proxy.provider.mycluster(如org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider),指定客户端选择活动NameNode的代理类。 - 自动故障转移(可选):
dfs.ha.fencing.methods(如sshfence)、dfs.ha.fencing.ssh.private-key-files(如/path/to/private/key),配置故障转移时的隔离机制(防止脑裂)。
2.2 配置core-site.xml
在所有节点上编辑core-site.xml,添加以下配置:
- 默认文件系统:
fs.defaultFS(如hdfs://mycluster),指定集群的统一访问入口(需与dfs.nameservices一致)。 - ZooKeeper地址(可选):
ha.zookeeper.quorum(如master:2181,node1:2181,node2:2181),若使用ZooKeeper管理HA状态,需配置其地址。
3. 配置JournalNode集群
JournalNode负责存储NameNode的编辑日志,确保主备NameNode数据一致:
- 启动JournalNode:在每个JournalNode节点上执行
hadoop-daemon.sh start journalnode(或start-dfs.sh自动启动),启动后可通过jps命令查看JournalNode进程。 - 格式化JournalNode(可选):首次启动前可执行
hdfs namenode -formatJournalNode格式化JournalNode数据目录。
4. 同步主NameNode元数据
在主NameNode(如nn1)上执行hdfs namenode -format格式化,生成元数据目录;然后执行hdfs namenode -bootstrapStandby将主NameNode的元数据同步到备用NameNode(如nn2),确保两者初始状态一致。
5. 启动HDFS集群
- 启动JournalNode:在所有JournalNode节点上启动服务(已在步骤3完成)。
- 启动NameNode:在主NameNode上执行
hdfs namenode启动(或start-dfs.sh),随后在备用NameNode上执行hdfs namenode启动(备用NameNode会自动同步主节点的编辑日志)。 - 启动DataNode:在所有DataNode节点上执行
hdfs datanode启动(或start-dfs.sh),完成数据节点部署。
6. 验证高可用性
- 检查集群状态:执行
hdfs dfsadmin -report,查看所有NameNode、DataNode的状态是否正常(如Live表示存活)。 - 模拟故障切换:手动停止主NameNode(如
stop-dfs.sh或在nn1上执行hadoop-daemon.sh stop namenode),等待1-2分钟后,通过hdfs dfsadmin -report确认备用NameNode是否切换为Active状态;再启动原主NameNode,观察其是否转为Standby状态。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1446569.html