Hadoop HA高可用集群3.3.6搭建(详细教程)

前置环境
(1)下载:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
(2)安装ZK Linux环境Zookeeper集群安装(详细教程)-优快云博客
(3)确保SSH互通Centos集群一键免密登陆xssh脚本


部署规划

6ba120c8c52e4e1eb5115c21f6e562bb.png
a18a9b7ee489432f8c0012e9fe4279b5.png


1.第一台机器上传解压hadoop安装包

# 1.解压到指定路径
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -zxvf /opt/apk/hadoop-3.3.6.tar.gz -C /opt/
# 创建软链接
ln -s /opt/hadoop-3.3.6 /opt/apps/hadoop
# 2.配置环境变量
vi /etc/profile.d/my_env.sh
# 在末尾添加
# HADOOP_HOME
export HADOOP_HOME=/opt/apps/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 3.使修改后的文件生效
source /etc/profile

# 4.测试Hadoop是否安装成功
hadoop version

2.目录准备

在bigdata01创建好,后面会分发给各个节点
像data1、data2...,本地目录可以配置多个,且每个目录存放内容相同,增加了可靠性,并没有真正提高高可用性
 

# 创建目录结构
mkdir -p /opt/apps/hadoop/data1/tmp
mkdir -p /opt/apps/hadoop/data2/tmp

mkdir -p /opt/apps/hadoop/data1/data/journalnode
mkdir -p /opt/apps/hadoop/data1/data/namenode
mkdir -p /opt/apps/hadoop/data2/data/namenode
mkdir -p /opt/apps/hadoop/data1/data/datanode
mkdir -p /opt/apps/hadoop/data2/data/datanode

# 创建目录的所属用户组和用户
groupadd hadoop
useradd -m -g hadoop hadoop

# 更改hadoop目录的所有权
chown -R hadoop:hadoop /opt/hadoop-3.3.6
chmod -R 755 /opt/apps/hadoop/data1/
chmod -R 755 /opt/apps/hadoop/data2/


3.集群配置

cd /opt/apps/hadoop/etc/hadoop
vi hadoop-env.sh

# 追加内容,日志路径配置修改该文件
export JAVA_HOME=/opt/apps/java
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

下列配置,在<configuration>与</configuration>之间添加内容:

vi core-site.xml

    <!-- 指定HDFS的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns1</value>
    </property>
    <!-- 指定Hadoop临时数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/apps/hadoop/data1/tmp,/opt/apps/hadoop/data2/tmp</value>
    </property>
    <!-- 指定Hadoop日志的存储目录 -->
    <property>
        <name>hadoop.log.dir</name>
        <value>/opt/apps/hadoop/data2/log/hadoop</value>
    </property>
    <!-- 配置ZooKeeper集群的地址列表,用于Hadoop高可用性(HA) -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>bigdata01:2181,bigdata02:2181,bigdata03:2181</value>
    </property>
    <!-- 设置访问Hadoop Web界面时使用的静态用户名 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
    <!-- 允许root用户代理任何主机上的请求,指定了哪些主机可以作为代理用户来提交作业 -->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <!-- 允许root用户代理任何组的用户 -->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

vi hdfs-site.xml

    <!-- 设置HDFS的副本数 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- NameNode的元数据存储目录 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/apps/hadoop/data1/data/namenode,/opt/apps/hadoop/data2/data/namenode</value>
    </property>
    <!-- DataNode的数据存储目录 -->
    <p
<think>嗯,用户想了解如何搭建Hadoop高可用集群的实验步骤和实验结果。首先,我需要回忆一下Hadoop高可用性配置,特别是HDFS和YARN的HA设置。Hadoop高可用主要通过消除单点故障来实现,比如NameNode和ResourceManager的HA。 首先,用户可能是在做毕业设计或者课程实验,需要实际动手搭建集群。他们可能对Hadoop有一定了解,但具体的高可用配置步骤可能不太清楚。需要明确实验的环境,比如使用多少台机器,操作系统是什么,是否需要配置SSH免密登录,以及Java环境等。 接下来,步骤方面,应该从准备环境开始,包括至少三台节点,可能还需要JournalNode和ZooKeeper节点。需要确保网络配置正确,主机名解析,防火墙设置,时间同步这些基础步骤。然后是安装Java和Hadoop,配置环境变量。 然后是关键的配置文件修改,比如core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。需要详细说明每个配置项的作用,比如指定ZooKeeper地址,NameNode的命名服务,故障转移配置等。 用户可能需要具体的配置示例,所以给出示例配置会比较好。比如在hdfs-site.xml中设置dfs.nameservices为mycluster,配置两个NameNode,以及JournalNodes的地址。同时,ZooKeeper的配置也是重点,需要安装并配置ZooKeeper集群,确保其正常运行。 然后是初始化步骤,格式化ZKFC,启动JournalNode,格式化NameNode,同步元数据,启动HDFS和YARN服务。需要按顺序执行这些步骤,否则可能会导致启动失败。比如必须先启动JournalNode,再格式化NameNode,否则JournalNode可能无法正确记录编辑日志。 在实验结果部分,需要验证各个组件是否正常工作。比如通过jps查看进程,检查Web界面,测试故障转移。可能需要手动杀死Active NameNode,观察是否自动切换。同时,提交MapReduce作业来测试YARN的高可用性是否有效。 可能用户会遇到的问题包括配置错误、端口冲突、服务启动顺序错误,或者防火墙阻止通信。需要提醒用户检查日志,确认各个服务是否正常启动,网络通信是否畅通。另外,时间同步很重要,否则ZooKeeper可能会出现问题。 最后,实验结果需要总结高可用集群的效果,比如NameNode故障自动切换,ResourceManager的容错,以及数据的一致性。同时,可能存在的不足,比如资源消耗增加,配置复杂度高,适合实验环境但生产环境需要更多优化。 需要确保步骤清晰,分点列出,避免遗漏关键配置项。同时,使用中文回答,按照用户要求的结构,先步骤后实验结果。可能用户需要具体的命令示例,比如格式化命令、启动命令等,所以给出具体命令会更有帮助。还要注意LaTeX格式的正确使用,比如变量和配置项用$...$包裹,但用户的问题中并没有太多数学公式,所以可能不需要太多这方面的处理,但按照系统指令,行内表达式需要用$符号,比如$HADOOP_HOME$这样的路径。 总之,整理出一个结构清晰、步骤详细、验证方法明确的指南,帮助用户顺利完成实验,并理解高可用集群的运作原理和效果。</think>### Hadoop高可用集群搭建实验步骤 --- #### **一、实验环境准备** 1. **节点规划**(最低要求): - 3台Linux服务器(CentOS 7+或Ubuntu 18.04+) - 角色分配: - **NameNode (NN)**:2台(Active + Standby) - **JournalNode (JN)**:3台(奇数台,用于共享EditLog) - **DataNode (DN)**:每台服务器均可部署 - **ZooKeeper (ZK)**:3台(奇数台,用于故障选举) - **ResourceManager (RM)**:2台(Active + Standby) 2. **基础配置**: - 配置主机名与静态IP(如`node1`, `node2`, `node3`) - 配置SSH免密登录(所有节点互通) - 关闭防火墙或开放端口(如`8020`, `8485`, `2181`, `8088`等) - 同步时间(使用`ntpdate`或`chronyd`) 3. **安装依赖**: - JDK 8+(配置`JAVA_HOME`) - Hadoop 3.x(如3.3.6,解压到`/opt/hadoop`) - ZooKeeper 3.6+(解压到`/opt/zookeeper`) --- #### **二、配置文件修改** 1. **Hadoop核心配置**: - **`core-site.xml`**: ```xml <property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> <!-- 命名服务名称 --> </property> <property> <name>ha.zookeeper.quorum</name> <value>node1:2181,node2:2181,node3:2181</value> <!-- ZK集群地址 --> </property> ``` - **`hdfs-site.xml`**: ```xml <property> <name>dfs.nameservices</name> <value>mycluster</value> </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> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>node1:9870</value> </property> <!-- 类似配置nn2 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/opt/hadoop/journal</value> <!-- JournalNode数据目录 --> </property> ``` - **`yarn-site.xml`**: ```xml <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> </property> <!-- 配置RM节点地址 --> ``` 2. **ZooKeeper配置**: - **`zoo.cfg`**: ```properties server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 ``` --- #### **三、初始化与启动** 1. **启动ZooKeeper集群**: ```bash # 在每个ZK节点执行 /opt/zookeeper/bin/zkServer.sh start ``` 2. **格式化HDFS HA**: - 在**JournalNode节点**启动服务: ```bash hadoop-daemon.sh start journalnode ``` - 在**第一个NameNode**格式化并同步元数据: ```bash hdfs namenode -format -clusterId mycluster hdfs zkfc -formatZK # 初始化ZKFC hadoop-daemon.sh start namenode ``` - 在**第二个NameNode**同步元数据: ```bash hdfs namenode -bootstrapStandby hadoop-daemon.sh start namenode ``` 3. **启动HDFS与YARN**: ```bash start-dfs.sh start-yarn.sh ``` --- #### **四、实验结果验证** 1. **进程检查**: - 通过`jps`命令确认进程: - NameNode、DataNode、JournalNode、ZKFC - ResourceManager、NodeManager 2. **Web界面验证**: - HDFS状态:`http://node1:9870`(Active NN显示为`active`) - YARN状态:`http://node1:8088`(Active RM显示为`active`) 3. **故障转移测试**: - 手动杀死Active NameNode进程,观察Standby自动切换为Active。 - 提交MapReduce作业(如WordCount),验证YARN调度正常。 --- #### **五、实验结果总结** 1. **成功指标**: - NameNode和ResourceManager实现自动故障转移。 - 数据写入HDFS后,Standby NN可读取完整元数据。 - ZooKeeper选举日志显示正常(无`ERROR`)。 2. **可能问题**: - 配置文件中端口冲突或路径权限错误。 - 时间不同步导致ZK选举失败。 - JournalNode未启动导致EditLog无法同步。 3. **改进方向**: - 增加DataNode数量提升存储容量。 - 配置HDFS Federation扩展命名空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值