HDFS高可用性(HA)配置步骤
core-site.xml、hdfs-site.xml等配置文件,便于后续恢复。hdfs-site.xml在NameNode节点上编辑hdfs-site.xml,添加以下关键配置:
dfs.nameservices(如mycluster),作为集群唯一标识。dfs.ha.namenodes.mycluster(如nn1,nn2),定义所有NameNode实例名称。dfs.namenode.rpc-address.mycluster.nn1/nn2(如master:8020、slave1:8020),指定每个NameNode的RPC通信地址。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间数据同步)。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),配置故障转移时的隔离机制(防止脑裂)。core-site.xml在所有节点上编辑core-site.xml,添加以下配置:
fs.defaultFS(如hdfs://mycluster),指定集群的统一访问入口(需与dfs.nameservices一致)。ha.zookeeper.quorum(如master:2181,node1:2181,node2:2181),若使用ZooKeeper管理HA状态,需配置其地址。JournalNode负责存储NameNode的编辑日志,确保主备NameNode数据一致:
hadoop-daemon.sh start journalnode(或start-dfs.sh自动启动),启动后可通过jps命令查看JournalNode进程。hdfs namenode -formatJournalNode格式化JournalNode数据目录。在主NameNode(如nn1)上执行hdfs namenode -format格式化,生成元数据目录;然后执行hdfs namenode -bootstrapStandby将主NameNode的元数据同步到备用NameNode(如nn2),确保两者初始状态一致。
hdfs namenode启动(或start-dfs.sh),随后在备用NameNode上执行hdfs namenode启动(备用NameNode会自动同步主节点的编辑日志)。hdfs datanode启动(或start-dfs.sh),完成数据节点部署。hdfs dfsadmin -report,查看所有NameNode、DataNode的状态是否正常(如Live表示存活)。stop-dfs.sh或在nn1上执行hadoop-daemon.sh stop namenode),等待1-2分钟后,通过hdfs dfsadmin -report确认备用NameNode是否切换为Active状态;再启动原主NameNode,观察其是否转为Standby状态。