在centos环境下搭建高可用性hdfs (ha) 集群,需要配置两个namenode节点,利用zookeeper进行状态监控,并配置journalnode实现元数据同步。以下步骤详细阐述了搭建过程:
一、前期准备
- 集群规划: 确定集群中每个节点的角色 (NameNode, Secondary NameNode, DataNode) 及其网络配置。 确保网络连接畅通,并预留足够的资源。
- 备份配置: 备份现有的hdfs配置文件 (hdfs-site.xml, core-site.xml 等),以便在必要时回滚到非HA模式。
二、配置HDFS HA
- 修改hdfs-site.xml: 在每个NameNode节点上修改hdfs-site.xml 文件,添加或修改以下配置项 (根据实际情况调整主机名和端口号):
<property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>master:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>slave1:8020</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>master:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>slave1:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop-sny/bigdata/dfs/journal/data</value> </property> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property>
其中,master 和 slave1 替换为实际的NameNode主机名,slave2 为JournalNode主机名。 确保JournalNode的端口号 (8485) 与配置一致。
- 修改core-site.xml: 确保core-site.xml 文件中配置了正确的HDFS文件系统路径 (fs.defaultFS) 等必要属性。
三、配置zookeeper
在所有参与HA的节点上安装并配置ZooKeeper。ZooKeeper用于协调NameNode的活动和故障转移。 这部分配置细节取决于你选择的ZooKeeper安装方式和版本。
四、启动HDFS集群
- 格式化NameNode: 在其中一个NameNode节点上执行 hdfs namenode –format 命令进行格式化 (仅需执行一次)。
- 启动HDFS: 使用 start-dfs.sh 脚本启动整个HDFS集群。
五、验证高可用性
- 检查状态: 使用 hdfs dfsadmin -report 命令检查集群状态,确保两个NameNode都处于活动状态 (Active 或 Standby)。
- 模拟故障: 模拟其中一个NameNode节点故障 (例如,停止其服务),观察备用NameNode是否能够自动接管。
六、关键注意事项
- JournalNode配置: JournalNode集群的正确配置对于NameNode之间的数据一致性至关重要。确保JournalNode节点数量满足高可用性要求,并具有足够的存储空间和带宽。
- 网络连接: 确保所有节点之间网络连接稳定可靠,避免网络故障影响HA功能。
- 防火墙: 确保防火墙允许HDFS和ZooKeeper所需的端口通信。
- 监控: 定期监控NameNode和JournalNode的状态,及时发现并解决潜在问题。
此步骤仅提供基本配置,实际应用中可能需要根据具体环境进行调整。 建议参考Hadoop官方文档获取更详细的配置信息。