在Ubuntu上实现Hadoop高可用性需配置NameNode和ResourceManager的高可用,依赖ZooKeeper实现故障检测与自动切换,具体步骤如下:
-
环境准备
- 安装JDK 8并配置环境变量。
- 确保节点间网络互通,配置主机名与IP映射。
- 安装Hadoop并解压到所有节点,设置相同版本。
-
配置NameNode高可用
- 修改
core-site.xml:设置fs.defaultFS为高可用集群名称(如hdfs://mycluster),指定ZooKeeper地址ha.zookeeper.quorum。 - 修改
hdfs-site.xml:- 配置
dfs.nameservices为集群名称,定义主备NameNode(如nn1,nn2)及其RPC/HTTP地址。 - 设置
dfs.namenode.shared.edits.dir为JournalNode共享存储路径(如qjournal://jn1:8485;jn2:8485/jcluster)。 - 启用自动故障转移
dfs.ha.automatic-failover.enabled=true。
- 配置
- 配置JournalNode:在所有JournalNode节点上创建数据目录并格式化
hdfs namenode -formatJournalNode。
- 修改
-
配置ResourceManager高可用
- 修改
yarn-site.xml:启用yarn.resourcemanager.ha.enabled,指定主备ResourceManager ID及ZooKeeper地址。
- 修改
-
启动服务与验证
- 启动ZooKeeper集群、JournalNode、NameNode(主备)及ResourceManager(主备)。
- 使用
jps命令检查进程是否正常运行,模拟节点故障验证自动切换功能。
关键组件说明:
- ZooKeeper:用于监控NameNode/ResourceManager状态,触发故障转移。
- JournalNode:存储NameNode元数据编辑日志,实现主备数据同步。
- SSH免密登录:确保节点间无密码通信,用于故障转移时的操作。
参考资料: