在Hadoop 3.x版本中配置高可用(HA)主要涉及NameNode的高可用性设置,以消除单点故障问题。以下是配置Hadoop 3.x高可用集群的基本步骤:
1. 环境准备
-
安装JDK: 确保所有节点都已安装并配置好Java Development Kit (JDK)。
-
配置SSH无密码登录: 在所有节点之间设置SSH无密码登录,包括NameNodes和DataNodes。
2. 安装和配置ZooKeeper
- 安装ZooKeeper: ZooKeeper作为分布式协作服务,用于管理Hadoop的HA状态。在独立的节点或NameNode节点上安装并配置ZooKeeper集群,确保其高可用。
3. 分发Hadoop
- 将Hadoop 3.x的安装包分发到所有节点,并解压到相同路径。
4. 配置Hadoop环境变量
- 在所有节点上设置Hadoop的环境变量,包括
HADOOP_HOME
和PATH
。
5. 修改配置文件
-
core-site.xml: 添加或修改如下配置,指定ZooKeeper的地址和HDFS的名称服务。
<property> <name>fs.defaultFS</name> <value>hdfs://nameservice1</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>zk_node1:2181,zk_node2:2181,zk_node3:2181</value> </property>
-
hdfs-site.xml: 配置NameNode HA和JournalNodes。
<property> <name>dfs.nameservices</name> <value>nameservice1</value> </property> <property> <name>dfs.ha.namenodes.nameservice1</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.nameservice1.nn1</name> <value>nn1_host:8020</value> </property> <property> <name>dfs.namenode.http-address.nameservice1.nn1</name> <value>nn1_host:50070</value> </property> <!-- 类似地配置nn2 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://jn1_host:8485;jn2_host:8485;jn3_host:8485/nameservice1</value> </property>
-
yarn-site.xml: 配置YARN的HA(如果需要)。
6. 配置和启动JournalNodes
- 确保在配置的JournalNodes主机上启动JournalNode服务。
7. 初始化NameNodes
- 在每个NameNode上执行格式化命令,使用
-clusterId
和-force
参数,并指定共享的edits目录:hdfs namenode -bootstrapStandby -nonInteractive -clusterId CID-clusterID -force
8. 启动Hadoop服务
- 启动ZooKeeper集群。
- 使用HDFS的HA脚本来启动NameNodes和DataNodes:
sbin/start-dfs.sh sbin/start-yarn.sh
9. 验证HA配置
- 检查Web UI(如http://nn1_host:50070 和 http://nn2_host:50070)确认NameNodes的状态。
- 测试故障转移,如手动关闭活动NameNode,观察是否能自动切换到备用NameNode。
请注意,上述步骤提供了一个大致的指导框架,实际部署时需要根据具体的网络环境、硬件配置及安全要求进行相应的调整。在配置过程中,务必详细记录每一步的配置信息,以便于后续的维护和故障排查。