当前位置:首页 > 系统教程 > 正文

CentOS7环境下Hadoop高可用(HA)集群部署完全指南

CentOS7环境下Hadoop高可用(HA)集群部署完全指南

手把手教你搭建生产环境Hadoop HA集群

关键词:本文围绕CentOS7 Hadoop HAHadoop高可用部署Hadoop集群搭建Hadoop HA配置展开,确保你能够掌握核心要点,从零开始构建可靠的大数据平台。

CentOS7环境下Hadoop高可用(HA)集群部署完全指南 CentOS7 Hadoop HA  Hadoop高可用部署 Hadoop集群搭建 HA配置 第1张

一、基础环境配置

我们使用三台CentOS7服务器,主机名分别为hadoop1、hadoop2、hadoop3。内存建议4GB+,硬盘40GB+。以下操作所有节点均需执行,除非特别说明。

1. 网络与主机名

配置静态IP,并修改主机名:

# 设置主机名(分别执行)hostnamectl set-hostname hadoop1   # hadoop2/hadoop3类似

编辑/etc/hosts,添加:

192.168.1.101 hadoop1192.168.1.102 hadoop2192.168.1.103 hadoop3

2. 关闭防火墙与SELinux

systemctl stop firewalld && systemctl disable firewalldsetenforce 0sed -i "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config

3. 安装Java

下载Oracle JDK 8,解压并设置JAVA_HOME。此处以/usr/local/java为例:

tar -zxf jdk-8u202-linux-x64.tar.gz -C /usr/local/echo "export JAVA_HOME=/usr/local/jdk1.8.0_202" >> /etc/profileecho "export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profilesource /etc/profile

二、SSH免密登录配置

在hadoop1上生成密钥,并复制到所有节点:

ssh-keygen -t rsa -P ""ssh-copy-id hadoop1ssh-copy-id hadoop2ssh-copy-id hadoop3

测试免密登录:ssh hadoop2 无需密码即成功。

三、ZooKeeper集群安装

ZooKeeper是Hadoop HA的必要组件,用于管理NameNode和ResourceManager的选举。下载ZooKeeper 3.4.14,并配置:

tar -zxf zookeeper-3.4.14.tar.gz -C /usr/local/cd /usr/local/zookeeper-3.4.14cp conf/zoo_sample.cfg conf/zoo.cfgmkdir -p /data/zookeeper

编辑conf/zoo.cfg,添加:

dataDir=/data/zookeeperserver.1=hadoop1:2888:3888server.2=hadoop2:2888:3888server.3=hadoop3:2888:3888

在每个节点创建/data/zookeeper/myid文件,内容为对应ID(1,2,3)。启动ZooKeeper:

/usr/local/zookeeper-3.4.14/bin/zkServer.sh start

检查状态:/usr/local/zookeeper-3.4.14/bin/zkServer.sh status,应有Leader和Follower。

四、Hadoop HA配置

下载Hadoop 3.3.6(或3.x),解压到/usr/local/hadoop。配置环境变量。以下重点配置核心文件。

1. core-site.xml

            fs.defaultFS        hdfs://mycluster                ha.zookeeper.quorum        hadoop1:2181,hadoop2:2181,hadoop3:2181    

2. hdfs-site.xml

            dfs.nameservices        mycluster                dfs.ha.namenodes.mycluster        nn1,nn2                dfs.namenode.rpc-address.mycluster.nn1        hadoop1:8020                dfs.namenode.rpc-address.mycluster.nn2        hadoop2:8020                dfs.namenode.http-address.mycluster.nn1        hadoop1:9870                dfs.namenode.http-address.mycluster.nn2        hadoop2:9870                dfs.namenode.shared.edits.dir        qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster                dfs.journalnode.edits.dir        /data/journalnode                dfs.ha.automatic-failover.enabled        true                dfs.client.failover.proxy.provider.mycluster        org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider    

3. yarn-site.xml (启用RM HA)

            yarn.resourcemanager.ha.enabled        true                yarn.resourcemanager.cluster-id        yarn-ha-cluster                yarn.resourcemanager.ha.rm-ids        rm1,rm2                yarn.resourcemanager.hostname.rm1        hadoop1                yarn.resourcemanager.hostname.rm2        hadoop2                yarn.resourcemanager.zk-address        hadoop1:2181,hadoop2:2181,hadoop3:2181    

4. mapred-site.xml

            mapreduce.framework.name        yarn    

将配置好的Hadoop目录同步到其他节点(可使用scprsync)。

五、启动集群

按顺序执行以下命令:

  1. 启动ZooKeeper(所有节点):/usr/local/zookeeper-3.4.14/bin/zkServer.sh start
  2. 启动JournalNode(所有节点):hdfs --daemon start journalnode
  3. 在hadoop1上格式化NameNodehdfs namenode -format
  4. 启动hadoop1上的NameNodehdfs --daemon start namenode
  5. 在hadoop2上同步元数据hdfs namenode -bootstrapStandby
  6. 格式化ZKFailoverController(在任意节点):hdfs zkfc -formatZK
  7. 启动所有NameNode和DataNode:分别在hadoop1和hadoop2执行hdfs --daemon start namenode,所有节点执行hdfs --daemon start datanode
  8. 启动YARN:在hadoop1和hadoop2分别启动ResourceManager yarn --daemon start resourcemanager,所有节点启动NodeManager yarn --daemon start nodemanager

也可以使用脚本start-dfs.shstart-yarn.sh,但需确保配置正确且免密。

六、验证高可用

访问NameNode Web UI: http://hadoop1:9870http://hadoop2:9870,确认一个是active,一个是standby。使用命令查看:

hdfs haadmin -getServiceState nn1hdfs haadmin -getServiceState nn2

模拟故障:kill掉active NameNode进程,观察standby是否自动切换为active。同样,YARN ResourceManager也可通过yarn rmadmin -getServiceState rm1验证。

至此,一个完整的Hadoop高可用集群部署完成。通过本教程,你不仅学会了CentOS7 Hadoop HA的搭建,还掌握了Hadoop高可用部署的核心配置。生产环境中可适当调整参数如内存、目录路径等。

更多关于Hadoop集群搭建Hadoop HA配置的细节,请参考官方文档或留言交流。