大数据 | Hadoop集群搭建(完全分布式)

news2025/2/26 15:19:39


知识目录

  • 一、前言
  • 二、配置三台虚拟机
    • 2.1 克隆三台虚拟机
    • 2.2 配置克隆的虚拟机
    • 2.3 使用Xshell连接虚拟机
    • 2.4 配置SSH免密登录
  • 三、Hadoop集群准备
    • 3.1 安装 rsync
    • 3.2 安装xsync分发脚本
    • 3.3 安装JDK和安装Hadoop
    • 3.4 配置环境变量
    • 3.5 分发
  • 四、Hadoop集群搭建
    • 4.1 修改配置文件
    • 4.2 配置workers
    • 4.3 格式化集群
    • 4.4 启动集群
    • 4.5 关闭集群
  • 五、结语

一、前言

大家好,我是初心,这篇文章是我历时三天,推翻重做两小时进行搭建的Hadoop集群(完全分布式)个人笔记和感想,收录于初心的《大数据》专栏。

🏠 个人主页:初心%个人主页
🧑 个人简介:大家好,我是初心,一名正在努力的双非二本院校计算机专业学生
💕 座右铭:理想主义的花,终究会盛开在浪漫主义的土壤里!🍺🍺🍺
💕欢迎大家:这里是CSDN,我记录知识的地方,喜欢的话请三连,有问题请私信😘

在集群搭建期间我经历了各种各样的错误,困难和BUG,不过都被我收割了。成功搭建之后,为了加深对Hadoop集群环境搭建的理解,我决定推翻重做,这次重做的过程就顺利多了!终于,历时两小时,我再次搭建好了Hadoop环境,而这篇文章就是我两次搭建总结出来的方法,分享出来希望能帮助到大家

二、配置三台虚拟机

2.1 克隆三台虚拟机

先从一台虚拟机克隆出三台虚拟机,作为搭建Hadoop完全分布式的三个节点。这里我的三个节点分别叫 hadoop102 hadoop103 hadoop104,克隆这里需要注意的地方

虚拟机要是关机状态才可以克隆
从虚拟机当前状态克隆
创建完整克隆,之后填写虚拟机名称和存放位置就好
在这里插入图片描述

2.2 配置克隆的虚拟机

  • 修改网络配置文件
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

  • 修改主机名
sudo vim /etc/hostname

  • 修改客户机内容
sudo vim /etc/hosts

在这里插入图片描述

  • 重启reboot,在另外两台虚拟机并上将步骤再重复两次
sudo reboot
  • Windows配置IP和主机名对应

进入到这个文件夹下,修改hosts文件

C:\Windows\System32\drivers\etc

将这个文件拖动到桌面,使用记事本打开,进行编辑后放回覆盖原文件。

在这里插入图片描述

2.3 使用Xshell连接虚拟机

在xshell中新建一个连接,重复三次,分别用xshell连接上三台虚拟机

至此,创建三个虚拟机节点,以及使用Xshell连接虚拟机工作我们就做好了。这是搭建Hadoop集群前的准备工作,这里我的 hadoop102 hadoop103 hadoopp104 分别对应的ip为 192.168.10.102/103/104.

2.4 配置SSH免密登录

在搭建Hadoop集群之前,我们还要为三台虚拟机搭建免密登录,这是基础,否则后面会不断提示输入密码。这是一个繁琐的操作,因此配置了免密之后我们就可以省略这些步骤,节省时间。

  • 使用hadoop102登录hadoop102
ssh localhost

接下来会提示问题,输入yes就好,之后输入本机的密码,就可以连接上本机。我们登录本机的目的是在 home 目录下生成 .ssh 隐藏文件夹,以便进行下一步操作,下面退出刚才的登录。

exit

进入到ssh文件夹(centos-1是我的普通用户名,如果虚拟机只有root用户,一定要创建一个普通用户,否则找不到这个文件夹)。

cd /home/centos-1/.ssh/
  • 在ssh文件夹下生成私钥

执行下面的命令生成本机的私钥

ssh-keygen -t rsa

执行完这个命令之后,查看当前文件夹的文件,可以看到多出这两个文件

  • 公私钥对拷

执行下面的命令,将Hadoop102的私钥拷贝到Hadoop102 Hadoop103 Hadoop104上

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

最后,在Hadoop103,Hadoop104上重复上面的步骤,这样就能实现三台机器之前的相互免密登录。

思考:root用户进行免密登录需不需要输入密码?

答案是要。因为root用户下的.ssh文件夹和普通用户是不一样的,如果想要在 root 用户下还能免密登录,也要重复上面的步骤,个人认为hadoop102的root用户配置了免密就可以了,其他的两台也可以配置

三、Hadoop集群准备

3.1 安装 rsync

安装同步工具rsync,这是安装xsync脚本的基础

sudo yum install -y rsync

3.2 安装xsync分发脚本

  • 查看环境变量
echo $PATH

在这里插入图片描述

  • 进入到在PATH中的一个目录
cd /usr/local/bin
  • 复制下面的分发脚本 xsync.sh ,再使用下面的命令创建xsync文件并粘贴,保存退出
sudo vim xsync
  • 分发脚本xsync.sh
#! /bin/bash

# 1.判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Argument!
    exit;
fi

# 2.遍历所有集群机器
for host in hadoop102 hadoop103 hadoop104
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
  • 授予可执行权限
sudo chmod 777 xsync

至此,虚拟机的任意目录就可以使用xsync命令。如果不可以使用,则证明安装失败,请仔细检查。

3.3 安装JDK和安装Hadoop

  • 进入centos操作目录
cd /opt
  • 创建JDK和Hadoop的压缩包存放目录和文件存放目录
sudo mkdir module
sudo mkdir software

在Xshell中通过Xftp文件上传工具(或者lrzsz、finalShell等),上传JDK和Hadoop的压缩包到software目录

在这里插入图片描述

  • 解压JDK和Hadoop到module目录
tar -xzvf jdk-8u202-linux-x64.tar.gz -C /opt/module/
tar -xzvf hadoop-3.1.3.tar.gz -C /opt/module/

3.4 配置环境变量

  • 进入到/etc/profile.d文件夹
cd /etc/profile.d
  • my_env.sh文件
# JAVA_HOME
# 只需修改java_home 因人而异 是自己的jdk安装目录
export JAVA_HOME=/opt/module/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin

# HADOOP_HOME
# 同理 这里只需修改Hadoop_home,是Hadoop安装目录
export HADOOP_HOME=/opt/module/hadoop-3.1.3

export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

# 这里是centos-1是用户名 因人而异 改为自己的虚拟机的普通用户名或root
export HDFS_NAMENODE_USER=centos-1
export HDFS_DATANODE_USER=centos-1
export HDFS_SECONDARYNAMENODE_USER=centos-1
export YARN_RESOURCEMANAGER_USER=centos-1
export YARN_NODEMANAGER_USER=centos-1

  • 新建文件my_env.sh,将my_env.sh文件内容复制进来
sudo vim my_env.sh
  • 刷新环境变量
source /etc/profile
  • 测试环境变量是否配置成功
java
hadoop

如果输出一大片信息说明配置好了

3.5 分发

使用xsync将hadoop102的jdk、Hadoop以及环境变量分发到另外两台虚拟机上。

  • 分发JDK和Hadoop
xsync /opt/module/
  • 分发环境变量
xsync /etc/profile.d/my_env.sh

四、Hadoop集群搭建

4.1 修改配置文件

首次搭建Hadoop完全分布式,要分别修改下面四个文件,这里仅展示configuration标签内的内容。

首先进入到Hadoop的etc目录的hadoop目录

cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim core-site.xml

core-site.xml

<configuration>
<!--指定NameNode的地址-->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoop102:8020</value>
  <description>version of this configuration file</description>
</property>
<!-- 指定Hadoop数据的存储目录-->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/module/hadoop-3.1.3/data</value>
  <description>A base for other temporary directories.</description>
</property>
</configuration>
vim mapred-site.xml

mapred-site.xml

<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
</configuration>
vim hdfs-site.xml

hdfs-site.xml


<configuration>
<!-- nn Web端访问地址-->
<property>
  <name>dfs.namenode.http-address</name>
  <value>hadoop102:9870</value>
  <description>
    The address and the base port where the dfs namenode web ui will listen on.
  </description>
</property>
<!-- 2nn Web端访问地址 -->
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>hadoop104:9868</value>
</property>
</configuration>
vim yarn-site.xml

yarn-site.xml

<configuration>
<!--指定MR走shuffle-->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
<!-- 指定ResourceManager的地址 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop103</value>
  </property>    
<!--环境变量的继承-->
  <property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  </property>
</configuration>

修改完成之后,退出到hadoop目录

cd /opt/module/hadoop-3.1.3/etc

执行分发,将etc下的hadoop目录的四个配置文件同步

xsync hadoop

4.2 配置workers

进入到配置文件目录

cd /opt/module/hadoop-3.1.3/etc/hadoop/

修改workers文件,将文件内容改成三台主机名即可,之后再次分发,将修改同步。

vim workers

xsync /opt/module/hadoop-3.1.3/etc/hadoop/

4.3 格式化集群

在hadoop102上进行格式化

hdfs namenode -format

至此,Hadoop完全分布式(集群)就搭建好了。

4.4 启动集群

下面这张图就是我们搭建的Hadoop集群的集群规划。首先进入到hadoop目录

cd /opt/module/hadoop-3.1.3/

在Hadoop102启动HDFS(Hadoop分布式文件系统)

sbin/start-dfs.sh

在Hadoop103启动YARN(Hadoop资源调度管理)

sbin/start-yarn.sh

使用jps命令来查看进程,验证是否和集群规划一致。

在这里插入图片描述


如果按照教程来,执行jps命令得到的结果和上图不一致,请仔细检查是否哪一步出现了问题,再进行下一步。

4.5 关闭集群

首先关闭YARN,再关闭HDFS,至此,Hadoop集群搭建(完全分布式搭建)成功。

sbin/stop-yarn.sh
sbin/stop-dfs.sh

五、结语

学习是一个漫长且持续渐进的过程,其中不免遇到很多困难,有时候让你头痛,让你心慌。有人选择逃避,有人选择全力以赴,希望大家的每一天都变得充实。

这就是今天要分享给大家的全部内容了,我们下期再见!
✨ 本文由初心原创,首发于CSDN博客, 博客主页:blog.csdn.net/qq_62592360
🍻 理想主义的花,终究会盛开在浪漫主义的土壤里!
🍻 如果你喜欢的话,记得点赞收藏关注,我在CSDN等你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数据分析案例24——基于深度学习的锂电池寿命预测

本期开始案例较为硬核起来了&#xff0c;适合理工科的硕士&#xff0c;人文社科的同学可以看前面的案例。 案例背景 这篇文章是去年就发了&#xff0c;刊物也印刷了&#xff0c;现在分享一部分代码作为案例给需要的同学。 原文链接&#xff08;知网文章 C核&#xff09;&…

OSPF的优化

O_ASE --- 标志域外路由信息 --- 因为域外的路由信息不可控性较强&#xff0c;所以&#xff0c;信任程度较低&#xff0c;我们将其优先级设置为150。 LSA --- 链路状态通告 --- OSPF协议在不同网络环境下产生的用于携带和传递不同的信息。 LSDB --- 链路状态数据库 SPF --- 最短…

【数据分析实战】基于python对Airbnb房源进行数据分析

文章目录&#x1f4da;引言&#x1f4d6;数据加载以及基本观察&#x1f4c3;缺失值观察及处理&#x1f516;缺失值观察以及可视化&#x1f516;缺失值处理&#x1f4c3;异常值观察及处理&#x1f4d6;数据探索&#x1f4a1;哪个区域的房源最受欢迎&#xff1f;&#x1f4a1;哪种…

基于opencv的边缘检测方法

1、梯度运算 用OpenCV的形态变换&#xff08; 膨胀、腐蚀、开运算和闭运算&#xff09;函数morphologyEx 梯度运算即膨胀结果-腐蚀结果&#xff1a; 【注意】对于二值图像来说&#xff0c;必须是前景图像为白色&#xff0c;背景为黑色&#xff0c;否则需要进行反二值化处理 …

Mybatis【第一个 Mybatis 程序】

目录 一、Maven 环境配置 1、配置 pom.xml 1.1、依赖的 jar包 1.2、防止资源导出失败 2、在resources下编写 Mybatis核心配置文件 二、搭建结构 1、编写mybatis工具类&#xff08;utils&#xff09; 2、编写实体类&#xff08;pojo&#xff09; 3、Mybatis 的实现&…

【Vue3实践】(六)Vue3使用vite处理环境变量、打包部署、nginx配置

文章目录1.前言2.环境变量2.1.环境变量文件(.env)2.2.环境变量变量定义与使用3.打包部署3.1.nginx配置3.2.静态站点根路径配置4.总结1.前言 由于在日常开发中会有一部分前端的开发任务&#xff0c;会涉及到Vue的项目的搭建、迭代、构建发布等操作&#xff0c;所以想系统的学习…

Linux:主机USB设备驱动简析

文章目录1. 前言2. 分析背景3. USB 总线硬件拓扑4. USB 协议栈概览4.1 Linux USB 子系统概览4.2 USB外设(如U盘)固件基础5. Linux USB 子系统初始化6. Linux USB 主机控制器(HCD) 驱动6.1 USB 主机控制器驱动初始化6.2 USB 主机控制器设备对象注册和驱动加载7. Linux USB 设备驱…

Chatgpt接入Csdn:实现自动回复、评论、点赞

背景 起初&#xff0c;我只是想自己弄个工具&#xff0c;用来处理一下大佬们的三连支持&#xff0c;后面我发现大家都在讨论chatgpt&#xff0c;于是我将自动回复和评论消息接入到了Csdn中&#xff0c;不知道这篇文章能不能发出来&#xff0c;代码的话暂时不开源&#xff0c;后…

【从零开始】Docker Desktop:听说你小子要玩我

前言 &#x1f34a;缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重&#xff0c;高强度的搬砖导致摸鱼时间下降。在上线项目时&#xff0c;看到运维大神一系列骚操作&#xff0c;dockerk8s的知识如过眼云烟&#xff0c;忘得干净的很。所以想重新恶补一下docker知识&…

深度学习中的卷积神经网络

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…

OpenCV实战(17)——FAST特征点检测

OpenCV实战&#xff08;17&#xff09;——FAST特征点检测0. 前言1. FAST 特征点检测2. 自适应特征检测3. 完整代码小结系列链接0. 前言 Harris 算子根据两个垂直方向上的强度变化率给出了角点(或更一般地说&#xff0c;兴趣点)的数学定义。但使用这种定义需要计算图像导数&am…

Android 14 新 API:直接监听截屏操作,不用再观察媒体文件了~

截屏可以说是手机设备最常用的功能了&#xff0c;Android 系统非常重视截屏方面的体验&#xff0c;近几年的更新都不忘去优化这方面的体验。 从一开始仅在通知栏提醒已截屏&#xff0c;到 Android 11 支持在左下角生成截屏缩略图供编辑或分享&#xff0c;再到 Android 12 支持…

计算机图形学 | 变换与观察

计算机图形学 | 变换与观察计算机图形学 | 变换与观察6.1 神奇的齐次坐标回顾几何阶段几何变换平移比例旋转对称错切齐次坐标的引入齐次坐标的概念和相关问题基于齐次坐标的变换6.2 三维模型&#xff0c;动起来&#xff01;基本三维变换平移比例旋转对称错切整体比例变换逆变换…

《计算机网络——自顶向下方法》精炼——1.4到1.7

三更灯火五更鸡&#xff0c;努力学习永不止。无惧困难与挑战&#xff0c;砥砺前行向成功。 文章目录引言正文时延排队时延吞吐量协议层次&#xff0c;服务模型&#xff08;重点&#xff09;封装&#xff08;重点&#xff09;网络安全&#xff08;选看&#xff09;恶意软件的分类…

【数据分析与挖掘】数据预处理

目录概述一、数据清洗1.1 缺失值处理1.1.1 拉格朗日插值法1.1.2 牛顿插值法1.2 异常值处理二、数据集成2.1 实体识别2.2 冗余属性识别三、数据变换3.1 简单函数变换3.2 规范化3.3 连续属性离散化3.4 属性构造3.5 小波变换四、数据规约4.1 属性规约4.2 数值规约概述 数据挖掘过…

Spring Boot中使用Redis

目录 1.依赖 2.依赖关系 3.配置 4.RedisTemplate 5.基础操作 6.事务 1.依赖 maven依赖如下&#xff0c;需要说明的是&#xff0c;spring-boot-starter-data-redis里默认是使用lettuce作为redis客户端的驱动&#xff0c;但是lettuce其实用的比较少&#xff0c;我们常用的…

如何在 Web 实现支持虚拟背景的视频会议

前言 众所周知&#xff0c;市面上有比如飞书会议、腾讯会议等实现视频会议功能的应用&#xff0c;而且随着这几年大环境的影响&#xff0c;远程协作办公越来越成为常态&#xff0c;关于视频会议的应用也会越来越多&#xff0c;且在远程办公的沟通协作中对沟通软件的使用要求会…

ARMv8-A非对齐数据访问支持(Alignment support)

目录 1&#xff0c;对齐传输和非对齐传输 2&#xff0c;AArch32 Alignment support 2.1 Instruction alignment 指令对齐 2.2 Unaligned data access 非对齐数据访问 2.3 SCTLR.A Alignment check enable 3&#xff0c;AArch64 Alignment support 3.1 Instruction align…

Text to image论文精读GigaGAN: 生成对抗网络仍然是文本生成图像的可行选择

GigaGAN是Adobe和卡内基梅隆大学学者们提出的一种新的GAN架构&#xff0c;作者设计了一种新的GAN架构&#xff0c;推理速度、合成高分辨率、扩展性都极其有优势&#xff0c;其证明GAN仍然是文本生成图像的可行选择之一。 文章链接&#xff1a;https://arxiv.org/abs/2303.0551…

大数据周会-本周学习内容总结07

目录 01【hadoop】 1.1【编写集群分发脚本xsync】 1.2【集群部署规划】 1.3【Hadoop集群启停脚本】 02【HDFS】 2.1【HDFS的API操作】 03【MapReduce】 3.1【P077- WordCount案例】 3.2【P097-自定义分区案例】 历史总结 01【hadoop】 1.1【编写集群分发脚本xsync】…