以下是CentOS上配置HDFS容错机制(高可用)的核心技巧及关键步骤,基于搜索资源中的最佳实践整理:
节点角色
网络要求
core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> <!-- 集群名称,需与hdfs-site.xml一致 --> </property> <property> <name>ha.zookeeper.quorum</name> <value>zk1:2181,zk2:2181,zk3:2181</value> <!-- ZooKeeper节点列表 --> </property>
hdfs-site.xml
<property> <name>dfs.nameservices</name> <value>mycluster</value> <!-- 集群名称 --> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> <!-- 主备NameNode标识 --> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>nn1-host:8020</value> <!-- 主NameNode RPC地址 --> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>nn2-host:8020</value> <!-- 备NameNode RPC地址 --> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://jn1:8485;jn2:8485;jn3:8485/mycluster</value> <!-- JournalNode共享日志路径 --> </property> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> <!-- 自动故障转移代理 --> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> <!-- 启用自动故障转移 --> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> <!-- 隔离机制,通过SSH防止脑裂 --> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> <!-- SSH密钥路径 --> </property>
hdfs-site.xml
中指定JournalNode数据存储目录:<property> <name>dfs.journalnode.edits.dir</name> <value>/var/lib/hadoop/journalnode</value> <!-- 确保目录权限为700 --> </property>
启动JournalNode
在所有JournalNode节点上执行:
$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode
格式化主NameNode
在主NameNode节点上执行(仅第一次需要):
hdfs namenode -format
同步元数据到备NameNode
在备NameNode上执行:
hdfs namenode -bootstrapStandby
启动服务
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-datanode
验证集群状态
hdfs dfsadmin -report
echo stat | nc zk1 2181 # 测试ZooKeeper服务是否正常
手动模拟故障
# 在主NameNode节点执行 pkill -9 java # 强制停止NameNode
hdfs dfsadmin -report
确认新主节点已接管服务。数据一致性校验
hdfs dfs -put /local/file /hdfs/path # 写入数据 # 停止部分DataNode后再次读取 hdfs dfs -cat /hdfs/path/file
hdfs-site.xml
中通过dfs.replication
配置默认副本数(通常3份,可根据节点数量调整)。hadoop.tmp.dir
配置),避免磁盘占满。参考来源: