Hadoop在Linux中实现高可用的核心步骤
JAVA_HOME环境变量;确保节点间网络互通,配置静态IP、主机名(如namenode1、resourcemanager1)及DNS解析。systemctl stop firewalld)或开放必要端口(如HDFS的8020、50070,YARN的8032、8088);配置SSH免密登录(ssh-keygen -t rsa并分发公钥),便于故障转移时远程执行命令;同步节点时间(安装NTP服务,ntpdate pool.ntp.org),避免时间差导致的状态不一致。NameNode是HDFS的核心元数据管理节点,其高可用通过主备NameNode+共享存储+ZooKeeper自动故障转移实现。
hdfs-site.xml中配置:<property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/cluster1</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/path/to/journalnode/dir</value> </property> core-site.xml中指定ZooKeeper地址:<property> <name>ha.zookeeper.quorum</name> <value>zoo1:2181,zoo2:2181,zoo3:2181</value> </property> hdfs-site.xml中启用自动故障转移:<property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> hdfs --daemon start journalnode(在每个JournalNode节点执行);hdfs namenode -format(仅在主NameNode执行一次);hdfs --daemon start namenode;hdfs namenode -bootstrapStandby(在备NameNode执行);hdfs --daemon start namenode;hdfs --daemon start zkfc(在每个NameNode节点执行,用于监控状态并触发故障转移)。ResourceManager负责YARN的资源调度,其高可用通过主备ResourceManager+ZooKeeper选主实现。
yarn-site.xml中添加以下参数:<property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yarn1</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>resourcemanager1</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>resourcemanager2</value> </property> <property> <name>yarn.resourcemanager.zk-address</name> <value>zoo1:2181,zoo2:2181,zoo3:2181</value> </property> start-yarn.sh,ZooKeeper会自动协调主备切换(当主ResourceManager故障时,备ResourceManager会在ZooKeeper的协调下接管服务)。dfs.namenode.name.dir),可使用hdfs dfsadmin -saveNamespace命令保存当前命名空间到镜像文件。hdfs dfs -cp命令复制重要数据到异地节点,或使用Hadoop DistCp工具实现跨集群备份(如hadoop distcp hdfs://cluster1/data hdfs://cluster2/backup)。hdfs --daemon stop namenode),观察备NameNode是否在ZKFC的作用下自动切换为Active状态(可通过jps命令查看备NameNode进程,或访问其Web UI确认状态)。yarn --daemon stop resourcemanager),验证备ResourceManager是否接管服务(通过YARN Web UI查看ResourceManager状态)。hdfs dfs -ls /查看目录结构,hdfs dfs -cat /file.txt查看文件内容)。