Ubuntu与Hadoop的高可用性配置
导读:Ubuntu与Hadoop高可用性(HA)配置指南 高可用性(HA)配置是Hadoop生产环境的核心需求,旨在通过NameNode主备切换、ResourceManager主备切换及ZooKeeper协调,解决单点故障问题,保障集群稳定运行。...
Ubuntu与Hadoop高可用性(HA)配置指南
高可用性(HA)配置是Hadoop生产环境的核心需求,旨在通过NameNode主备切换、ResourceManager主备切换及ZooKeeper协调,解决单点故障问题,保障集群稳定运行。以下是基于Ubuntu系统的详细配置步骤:
一、前置准备
-
环境要求
- 至少3台Ubuntu服务器(如
node1
、node2
、node3
),建议4台(区分NameNode、DataNode、JournalNode角色); - 所有节点安装JDK 8(
sudo apt install openjdk-8-jdk
); - 配置静态IP、主机名(如
node1
对应192.168.1.101
)及**/etc/hosts**映射(避免DNS依赖); - 配置SSH免密登录(主节点需免密登录所有节点,使用
ssh-keygen -t rsa
生成密钥,ssh-copy-id
分发公钥); - 部署ZooKeeper集群(3节点,参考Ubuntu下ZooKeeper集群搭建教程,确保
zkServer.sh status
显示Leader/Follower状态正常)。
- 至少3台Ubuntu服务器(如
-
Hadoop安装
- 下载Hadoop(如2.7.3或3.3.4版本),解压至
/usr/local/hadoop
; - 配置环境变量(
~/.bashrc
中添加export HADOOP_HOME=/usr/local/hadoop
、export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
,执行source ~/.bashrc
生效)。
- 下载Hadoop(如2.7.3或3.3.4版本),解压至
二、核心配置步骤
1. NameNode高可用配置(HDFS HA)
NameNode HA通过**QJM(Quorum Journal Manager)**实现元数据同步,确保主备NameNode数据一致。
- 修改
core-site.xml
(定义HDFS命名空间及ZooKeeper地址):< property> < name> fs.defaultFS< /name> < value> hdfs://mycluster< /value> < !-- 集群命名空间 --> < /property> < property> < name> ha.zookeeper.quorum< /name> < value> node1:2181,node2:2181,node3:2181< /value> < !-- ZooKeeper集群地址 --> < /property> < property> < name> dfs.ha.automatic-failover.enabled< /name> < value> true< /value> < !-- 启用自动故障转移 --> < /property>
- 修改
hdfs-site.xml
(配置主备NameNode、JournalNode及故障转移机制):< property> < name> dfs.nameservices< /name> < value> mycluster< /value> < !-- 与core-site.xml中的命名空间一致 --> < /property> < property> < name> dfs.ha.namenodes.mycluster< /name> < value> nn1,nn2< /value> < !-- 主备NameNode标识 --> < /property> < property> < name> dfs.namenode.rpc-address.mycluster.nn1< /name> < value> node1:8020< /value> < !-- nn1的RPC地址 --> < /property> < property> < name> dfs.namenode.rpc-address.mycluster.nn2< /name> < value> node2:8020< /value> < !-- nn2的RPC地址 --> < /property> < property> < name> dfs.namenode.http-address.mycluster.nn1< /name> < value> node1:50070< /value> < !-- nn1的HTTP地址 --> < /property> < property> < name> dfs.namenode.http-address.mycluster.nn2< /name> < value> node2:50070< /value> < !-- nn2的HTTP地址 --> < /property> < property> < name> dfs.namenode.shared.edits.dir< /name> < value> qjournal://node1:8485; node2:8485; node3:8485/mycluster< /value> < !-- JournalNode共享编辑日志地址 --> < /property> < property> < name> dfs.journalnode.edits.dir< /name> < value> /usr/local/hadoop/data/journalnode< /value> < !-- JournalNode本地存储路径 --> < /property> < property> < name> dfs.ha.fencing.methods< /name> < value> sshfence< /value> < !-- 隔离机制:通过SSH杀死备用NameNode进程 --> < /property> < property> < name> dfs.ha.fencing.ssh.private-key-files< /name> < value> /home/hadoop/.ssh/id_rsa< /value> < !-- SSH私钥路径 --> < /property>
- 格式化NameNode(仅在主NameNode上执行一次):
hdfs namenode -format
- 启动JournalNode(在所有JournalNode节点上执行):
hdfs --daemon start journalnode
- 初始化共享编辑日志(在主NameNode上执行):
hdfs namenode -initializeSharedEdits
- 启动HDFS集群:
start-dfs.sh
2. ResourceManager高可用配置(YARN HA)
ResourceManager HA通过主备RM实现资源管理高可用,配置步骤类似NameNode。
- 修改
yarn-site.xml
(启用RM HA及故障转移):< property> < name> yarn.resourcemanager.ha.enabled< /name> < value> true< /value> < /property> < property> < name> yarn.resourcemanager.cluster-id< /name> < value> yarn-cluster< /value> < !-- 集群唯一标识 --> < /property> < property> < name> yarn.resourcemanager.ha.rm-ids< /name> < value> rm1,rm2< /value> < !-- 主备RM标识 --> < /property> < property> < name> yarn.resourcemanager.hostname.rm1< /name> < value> node1< /value> < !-- rm1的主机名 --> < /property> < property> < name> yarn.resourcemanager.hostname.rm2< /name> < value> node2< /value> < !-- rm2的主机名 --> < /property> < property> < name> yarn.resourcemanager.zk-address< /name> < value> node1:2181,node2:2181,node3:2181< /value> < !-- ZooKeeper地址 --> < /property> < property> < name> yarn.resourcemanager.failover.enabled< /name> < value> true< /value> < !-- 启用自动故障转移 --> < /property> < property> < name> yarn.resourcemanager.failover.type< /name> < value> zookeeper< /value> < !-- 基于ZooKeeper的自动故障转移 --> < /property>
- 启动YARN集群:
start-yarn.sh
三、验证高可用性
- 检查进程状态:
在各节点执行jps
,确认主备NameNode、ResourceManager及JournalNode进程正常运行(如NameNode
、StandbyNameNode
、ResourceManager
、NodeManager
)。 - Web界面验证:
访问http://node1:50070
(HDFS Web UI)和http://node1:8088
(YARN Web UI),查看集群状态及主备角色切换情况。 - 模拟故障切换:
- 杀死主NameNode进程(
kill -9 < NameNode_PID>
),观察备用NameNode是否自动接管(jps
中StandbyNameNode
变为NameNode
); - 杀死主ResourceManager进程,验证备用ResourceManager是否自动启动。
- 杀死主NameNode进程(
四、优化建议
- 数据备份:定期备份HDFS关键数据(如
/user/hadoop
目录),使用hdfs dfs -cp
命令复制到异地节点; - 监控告警:部署Prometheus+Granafa监控集群状态(如NameNode内存、磁盘使用率、YARN资源利用率),设置阈值告警(如邮件、短信通知);
- 性能调优:调整HDFS块大小(
dfs.blocksize
,默认128MB,大文件可设为256MB)、YARN容器资源分配(yarn.scheduler.maximum-allocation-mb
,根据节点内存调整)。
通过以上步骤,可在Ubuntu系统上实现Hadoop集群的高可用性,确保元数据及资源管理服务的高可靠性,满足生产环境需求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu与Hadoop的高可用性配置
本文地址: https://pptw.com/jishu/716645.html