在Linux中实现HDFS高可用需配置主备NameNode、JournalNode和ZooKeeper,核心步骤如下:
环境准备
配置ZooKeeper(用于故障切换协调)
zoo.cfg配置集群节点ID和端口(如server.1=host1:2888:3888),在dataDir目录创建myid文件指定节点ID。zkServer.sh start。配置NameNode主备
hdfs namenode -format。hdfs-site.xml:
<property><name>dfs.nameservices</name><value>mycluster</value></property>
<property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property>
<property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>host1:8020</value></property>
<property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>host2:8020</value></property>
<property><name>dfs.journalnode.edits.dir</name><value>/path/to/jn</value></property>
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://host1:8485;host2:8485;host3:8485/mycluster</value></property>
dfs.ha.automatic-failover.enabled=true。配置JournalNode
/opt/hadoop/jn),启动服务:hdfs --daemon start journalnode。启动服务并验证
start-dfs.sh。hdfs haadmin -getServiceState nn1查看NameNode状态,模拟主节点故障,验证备节点是否自动切换。关键组件作用:
hdfs-site.xml和core-site.xml定义集群拓扑、故障转移策略等。参考来源: