大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(上)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(上)

090e6a1b899248c3bd3254b858e1c71e.png


一、写在前面🎈


大家好!我是初心,今天给大家带来的是Hadoop HA搭建保姆级教程,来自大二学长的万字长文自述和笔记!


相信很多人看到这个标题时,可能会产生一种疑问:博主你之前不是出过一期关于Hadoop HA高可用集群搭建的教程了吗,这次怎么还出一篇?是有什么改进的地方吗?


没错!本次将给大家带来更加详细的搭建教程以及解释! 希望能帮助大家更好的理解Hadoop HA集群。


老规矩,还是先介绍一下自己吧!(该走的流程不能少,嘿嘿嘿)


话不多说,就让我们一起进入正题吧!


二、集群准备🍟


这是我们本次搭建要完成的集群规划,也就是我们的,终极目标(The ultimate goal)。


2.1 集群规划


d474d288de9c4e6f9f73efe8d9939f30.png


也就是说,总共有hadoop102,hadoop103,hadoop104,hadoop105四个节点。先来一张搭建好的图证明一下我搭建好了

  • 停止集群


01d97bf3dacf4a009c514d07f94a0878.png

  • 启动集群

a9db7d6b13144064a2a262552e25e81f.png


  • 查看集群规划是否符合预期


3a1992a990914fa3874a31ad9951af55.png

2.2 集群解释


  • NN-1

NameNode节点1,在 core-site.xml 文件中配置。

<!-- mycluster是集群名称,值是集群中的所有namenodes -->
<property>
 <name>dfs.ha.namenodes.mycluster</name>
 <value>nn1,nn2</value>
</property>


  • NN-2

NameNode节点2,也是在 core-site.xml 文件中配置。

  • DN

DataNode,在workers中配置。 workers中的主机名要提前在/etc/hosts文件中做好主机名与IP的映射。

4669ea6e78954a029201eaaace4b61ba.png


  • ZK

Zookeeper,在 zoo.cfg 文件中配置。 注意要将 zoo_sample.cfg 文件改名为 zoo.cfg,这个文件在 zookeeper 目录的 conf 目录下。不需要启动Zookeeper的节点,不需要配置进来。

  • ZKFC

ZKFailOverController,不需要主动配置,哪里的NameNode正常启动了ZKFC就会启动。 ZKFailOverController是Hadoop中通过ZK实现FC(故障转移)功能的一个实用工具。

  • JNN

JournalNode,在需要启动的节点上启动,仅第一次启动Hadoop时需要手动启动,后面都不需要手动启动。


三、说明🔑

3.1 主机名说明


据了解,很多朋友使用的四个节点的名称 并不是 hadoop102,hadoop103,hadoop104,hadoop105 ,有是master、slave1,slave2,slave3的;有namenode,datanode1,datanode2,datanode3的。没关系,只是主机名不一样而已! 只需要将对应的地方修改一下,就可以。(如果你足够熟练,就知道哪些地方要用自己的主机名)


3.2 用户名说明


在搭建过程中,我也没有使用 root 账号,使用的是一个可以执行 sudo 命令的普通用户账号。


为什么不使用root账号?

试问一下大家,如果你在公司上班,如果你不是运维人员,只是普通的开发人员,你可以拿到root账号的权限吗?显然是不可以的,我认为我们在平时的训练中就要养成使用普通用户账号的习惯,实际操作中才能游刃有余。(类似于接受自己的平庸哈哈哈)


3.3 操作目录说明


所有操作均在 /opt/module/HA 目录下,当然如果需要修改环境变量就要切换到 /etc/profile.d/ 目录下。


3.3 必要工具说明


这里使用到的就是VMware(安装虚拟机),XShell(远程连接工具)、Xftp(文件传输工具)。

至此,我们的需求、要求以及硬件设备就准备好了。下面开始准备软件吧!


四、上传资料🌵


磨刀不误砍柴工!充分的准备可以让我们的搭建过程事半功倍,流畅无比! ,而且,这也是减少返工(软件工程中的名词)的重要条件,大家一定要做好哦!


4.1 资料准备


这里用到的安装包有:jdk-8u202-linux-x64.tar.gz,点我下载jdk,hadoop-3.1.3.tar.gz,点我下载hadoop,apache-zookeeper-3.5.7-bin.tar.gz。点我下载Zookeeper,如果没有这些文件的可以私信我获取,我都上传到百度网盘了。


4.2 脚本准备


这里,我主要使用到了分发脚本(脚本名xsync),Hadoop HA一键启动脚本(脚本名myHA),查看所有节点jps进程脚本(脚本名jpsall)。

脚本的使用之前有提到过,这里不再赘述,大家可以参考我的这篇文章或其他文章:hadoop集群启停脚本分享


下面是脚本内容,需要注意的是如果你的主机名和我不同,记得修改文中代码!

  • xsync
#! /bin/bash
# 1.判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Argument!
    exit;
fi
# 2.遍历所有集群机器
for host in hadoop102 hadoop103 hadoop104 hadoop105
do
    echo ==================== $host ===================
    # 3.遍历所有目录,挨个发送
    for file in $@
    do
        # 4.判断文件是否存在
        if [ -e $file ]
            then
                # 5.获取父目录
                pdir=$(cd -P $(dirname $file); pwd)
                # 6.获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done


  • myHA
#! /bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit;
fi
case $1 in
"start"){
    echo "----------启动zookeeper----------"
  for i in hadoop103 hadoop104 hadoop105
  do
        echo ---------- zookeeper $i 启动 ------------
    ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh start"
  done
    echo "---------- 启动hdfs------------"
    ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/start-dfs.sh"
    echo "---------- hadoop HA启动成功------------"
};;
"stop"){
    echo "----------关闭hdfs----------"
    ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/stop-dfs.sh"
    echo "----------关闭zookeeper----------"
  for i in hadoop103 hadoop104 hadoop105
  do
        echo ---------- zookeeper $i 停止 ------------
    ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh stop"
  done
    echo "---------- hadoop HA停止成功------------"
};;
"status"){
  for i in hadoop103 hadoop104 hadoop105
  do
        echo ---------- zookeeper $i 状态 ------------    
    ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh status"
  done
};;
*)
    echo "Input Args Error"
;;
esac


  • jpsall
#! /bin/bash
for host in hadoop102 hadoop103 hadoop104 hadoop105
do
        echo ----------$host----------
        ssh $host jps
done


4.3 配置文件准备


由于篇幅原因,这里不展示配置文件的具体内容,但是却是非常重要,重中之重,大家可以私信我获取!这是搭建HA高可用中的关键,是减少我们遇到 报错风暴 的必由之路。


这里要用到的配置文件有:core-site.xml,hdfs-site.xml,hadoop-env.sh,workers,yarn-site.xml,mapred-site.xml(都在hadoop/etc/hadoop目录下)zoo.cfg(zookeeper/conf/目录下),my_env.sh(/etc/profile.d/目录下),共8个文件。


这8个配置文件均已上传百度网盘!点我获取资料。


至此,我们的资料也准备好了!


五、解压与修改文件🍉


5.1 解压软件包


将上述我们准备好的Zookeeper、Hadoop、JDK软件包通过Xshell+Xftp上传到 /opt/software 目录下,并解压到 /opt/module/HA 目录下。

9bae9db49fe4480c966d2a962e43f2e1.png


上传文件过程请大家自己完成哦!下面是解压过程:(该过程只需要在一台节点上完成即可,我这里使用的hadoop102,其他的节点后面使用克隆)。

  • 创建HA目录
mkdir /opt/module/HA


  • 解压JDK
tar -xzvf /opt/software/jdk-8u202-linux-x64.tar.gz -C /opt/module/HA/


  • 解压Hadoop
tar -xzvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/HA/


  • 解压Zookeeper
tar -xzvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/HA/
  • 重命名Zookeeper
mv apache-zookeeper-3.5.7-bin/ zookeeper


  • 重命名JDK
mv jdk1.8.0_202/ jdk1.8



5.2 修改配置文件


hadoop目录下的文件共六个,在资料中已经给出,下面仅展示一部分要特别注意的配置文件。

  • 1.core-site.xml
  • 2.hdfs-site.xml
  • 3.hadoop-env.sh
  • 4.workers
hadoop103
hadoop104
hadoop105


  • 5.yarn-site.xml
  • 6.mapre-site.xml

zookeeper目录下的文件

  • 1.zoo.cfg
server.1=hadoop103:2888:3888
server.2=hadoop104:2888:3888
server.3=hadoop105:2888:3888


  • 2.myid

这个节点上没有使用Zookeeper,所以未使用myid文件。

/etc/profile.d目录下的文件

  • my_env.sh
# JAVA_HOME
# 只需修改java_home 因人而异 是自己的jdk安装目录
export JAVA_HOME=/opt/module/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
# HADOOP_HOME
# 同理 这里只需修改Hadoop_home,是Hadoop安装目录
export HADOOP_HOME=/opt/module/HA/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=sky
export HDFS_DATANODE_USER=sky
export HDFS_SECONDARYNAMENODE_USER=sky
export YARN_RESOURCEMANAGER_USER=sky
export YARN_NODEMANAGER_USER=sky
# ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/HA/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin


之后记得刷新环境变量:

source /etc/profile.d/my_env.sh


5.3 创建目录


创建Hadoop数据临时目录:


mkdir /opt/module/HA/tmp

创建JournalNode日志目录:

mkdir /opt/module/HA/logs


创建Zookeeper数据目录:

mkdir /opt/module/HA/zookeeper/zkData


5.4 分发HA目录


分发HA目录下的所有内容到hadoop103,hadoop104,hadoop105上。

xsync /opt/module/HA/


六、启动HA集群🎈

6.1 Zookeeper启动测试


分别在hadoop103,hadoop104,hadoop105三个节点上启动Zookeeper,因为这三个节点在集群规划中有ZK。

zkServer.sh start

130ac4ccb8874241a37a789bd677a915.png


1c4f310fa20a4d8a8bbe42360749980b.png

a6ac51c8737b42ad80dcaafd76c7c133.png

三个节点上的Zookeeper均启动成功!


6.2 启动JournalNode


分别在hadoop102,hadoop103,hadoop104三个节点上启动Zookeeper,因为这三个节点在集群规划中有JNN。


并且,JournalNode只需要手动启动一次,以后启动Hadoop HA高可用集群均不需要再次手动启动。

hdfs --daemon start journalnode


现在,我们通过jps来查看进程,ZK和JNN是否按照集群规划启动好了?

a48ea2f5952643d885cb55f65a2fd9a0.png

de4844bedb974c9298ed1da5ad8c9cd2.png

2b5004d8b34a46ac80aa3852e8c3a0b4.png

2ab887fc42ad418d86eed39522972c9f.png

可以看到,目前集群规划正确,下面我们就可以进行下一步操作啦。


6.3 初始化NameNode


在是NameNode节点上的任意一个节点上初始化NameNode,并且只需要初始化一遍,这里我的集群中,hadoop102和hadoop103上都有NameNode,但是因为hadoop103上有DataNode,所以我 选择使用hadoop102作为初始化节点 。

hdfs namenode -format

a01ce063c80a4300887dff97e94bf050.png


6.4 初始化Zookeeper


在具有Zookeeper节点上的任意一个节点上初始化Zookeeper,并且只需要初始化一遍。这里我选择在hadoop103上进行初始化。

hdfs zkfc -formatZK

bd76c1d4efe0433599c136f388511cb0.png


判断是否初始化成功:(在三台都查看一下)

zkCli.sh
ls \


52e56bd93b984bb8a334a7e9382e68c4.png


6.5 启动集群


分别在hadoop102,hadoop103上启动NameNode。

hadoop102上执行:(只需执行一次


hdfs --daemon start namenode

hadoop103上执行:(只需执行一次

hdfs namenode -bootstrapStandby

3c74e758ee0a4d6485769f97125802c2.png


在hadoop102上启动集群:

start-dfs.sh

42e5d5249b7e4596b8fce591187eca50.png

至此,集群中的NameNode,DataNode,Zookeeper,ZKFC,JournalNode都已经启动好了。下面,让我们一起来看看,我们的集群能否经得住检验吧!

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
20天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
71 2
|
20天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
59 1
|
1月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
58 1
|
1月前
|
SQL 分布式计算 大数据
大数据平台的毕业设计01:Hadoop与离线分析
大数据平台的毕业设计01:Hadoop与离线分析
104 0
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
152 6
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
65 2
|
1月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
75 5
|
1月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
36 4
|
1月前
|
大数据 网络安全 数据安全/隐私保护
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
119 5
|
1月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
151 5
下一篇
无影云桌面