2024年最新Hadoop 完全分布式部署_hadoop分布式安装部署(1),2024年最新字节大牛耗时八个月又一力作

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

一、安装Linux操作系统

这里以CentOS 7为例,最小安装,关闭防火墙、静态IP、主机名称。

具体安装步骤:略

虚拟机准备
1 通网络

能ping通外网,例如:

ping baidu.com

如果ping不通,修改如下文件:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

将ONBOOT=no改为ONBOOT=yes

重启网络或重启机器

重启网络

systemctl restart network

重启机器

reboot

2 修改默认主机名

查询主机名

[root@localhost ~]# hostname
localhost.localdomain

修改主机名,这里以主机名为node1为例

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostname
node1

重启生效

[root@localhost ~]# reboot
...
[root@node1 ~]# 


3 新建普通用户

因为root用户权限太高,误操作可能会造成不可挽回的损失,所以我们需要新建一个普通用户来安装操作

添加一个普通用户,用户名例如:hadoop,方法如下:

[root@node1 ~]# adduser hadoop
[root@node1 ~]# passwd hadoop
Changing password for user hadoop.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

给普通用户添加sudo执行权限,且执行sudo不需要输入密码

[root@node1 ~]# sudo vi /etc/sudoers
在%wheel  ALL=(ALL)       ALL一行下面添加如下语句:
hadoop    ALL=(ALL)       NOPASSWD: ALL

4 设置静态IP

设置静态IP

[root@node1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改核心内容如下

BOOTPROTO=static
IPADDR=10.90.100.121
GATEWAY=10.90.100.2
NETMASK=255.255.255.0
DNS1=10.90.100.2

IP地址根据实际的网段设置

注意:

1.BOOTPROTO设置为static,表示IP为静态的。

2.GATEWAY设置为上一步查询到的实际网关地址。

3.IPADDR设置为网关所在的网段,这里查到的网段为10.90.100.0

5. 关闭防火墙
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld

6.克隆主机

(1)选中node1用来克隆出node2和node3主机,点击 虚拟机–>管理–>克隆

完整克隆

在这里插入图片描述

用同样的方法克隆出node3

修改主机名
在node2上登录普通用户hadoop进行操作

修改主机名

[hadoop@node1 ~]$ sudo hostnamectl set-hostname node2
[sudo] password for hadoop: 

查看主机名

[hadoop@node1 ~]$ hostname
node2

重启机器

[hadoop@node1 ~]$ sudo reboot

同样的方法:

修改node3的主机名为node3

设置静态IP

静态IP的设置过程参照第一部分

node2 ip设置为 10.90.100.122
node3 ip设置为 10.90.100.123

修改ip与主机名的映射

[hadoop@node1 ~]$ sudo vi /etc/hosts

添加如下内容

10.90.100.121 node1
10.90.100.122 node2
10.90.100.123 node3

重启机器

[hadoop@node1 ~]$ sudo reboot

同样的方法,修改node2、node3机器。

7.配置机器之间免密登录

在node1机器操作:

ssh-keygen -t rsa

执行命令后,连续敲击三次回车键

[hadoop@node1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MOzp1MyZUfA69Wi3JEVoOXB4qkbRXr0t47ZCR2AgE2s hadoop@node1
The key's randomart image is:
+---[RSA 2048]----+
|      +o+=o+.    |
|     ..+o+X..    |
|      Eo.*oo.o   |
|     o.Bo* += .  |
|     .+.S +o+o   |
|     oo  o.++.   |
|     ..  . o..   |
|          . .    |
|           .     |
+----[SHA256]-----+

拷贝公钥

ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

执行ssh-copy-id命令后,根据提示输入yes,再输入机器登录密码

在这里插入图片描述

验证从node1发起ssh登录到node2,过程中不需要登录密码为配置成功。使用exit退出免密登录。

同样的方法,在node2、node3机器上配置机器之间免密登录操作。

8.编写分发脚本

安装rsync命令

[hadoop@node1 ~]$ rsync --help
-bash: rsync: command not found
[hadoop@node1 ~]$ sudo yum install rsync -y

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

在主目录创建bin目录

[hadoop@node1 ~]$ mkdir ~/bin

创建分发脚本文件xsync

[hadoop@node2 ~]$ vim ~/bin/xsync

内容如下

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi
#2. 遍历集群所有机器
for host in node1 node2 node3
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

修改权限

[hadoop@node1 ~]$ chmod +x ~/bin/xsync

测试

分别在node2、node3机器安装xsync命令

sudo yum install rsync -y

把xsync命令发送到node2、node3

xsync /home/hadoop/bin

二、安装JDK

① 上传jdk文件到已经安装好的node1,上传方式有很多,任选一种方式即可:

② 上传成功后,通过 ls 命令查看是否上传成功

③ 解压jdk-8u202-linux-x64.tar.gz/opt/module/hadoop目录下:

[hadoop@node1 ~]$ tar -zxvf  jdk-8u202-linux-x64.tar.gz -C /opt/module/hadoop

没有/opt/module/hadoop目录先创建,因为是使用hadoop普通用户,把hadoop目录的所属用户改为hadoop

[hadoop@node1 ~]$ sudo chown hadoop:hadoop -R /opt/module/hadoop 

④建立 JDK 软链接,以方便后续使用:

[hadoop@node1 hadoop]$ cd  /opt/module/hadoop/
[hadoop@node1 hadoop]$ ln -s  /opt/module/hadoop/jdk1.8.0_202 jdk

⑤ 配置 JDK 环境变量 :

[hadoop@node1 hadoop]$ sudo vim /etc/profile

vim 为打开文件命令

在文件内容的末尾添加如下代码(注意:等号两侧不要有空格)。

export JAVA\_HOME=/opt/module/hadoop/jdk
export JRE\_HOME=${JAVA\_HOME}/jre
export CLASSPATH=$JAVA\_HOME/lib/dt.jar:$JAVA\_HOME/lib/tools.jar:.
export PATH=${JAVA\_HOME}/bin:$PATH

⑥ 使配置生效 :

[hadoop@node1 hadoop]$ source /etc/profile

⑦ 检验是否安装成功 :

[hadoop@node1 hadoop]$ java -version
java version "1.8.0\_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

三、Hadoop集群安装部署

1.安装Hadoop

(1) 上传hadoop安装包到已经安装好的node1,上传方式有很多,任选一种方式即可

(2)上传成功后,通过 ls 命令查看是否上传成功

(3)解压hadoop-3.3.4.tar.gz/opt/module/hadoop/目录下

[hadoop@node1 ~]$ tar -xzvf hadoop-3.3.4.tar.gz -C  /opt/module/hadoop/

(4)建立 hadoop软链接,以方便后续使用

[hadoop@node1 hadoop]$ cd  /opt/module/hadoop/
[hadoop@node1 hadoop]$ ln -s  /opt/module/hadoop/hadoop-3.3.4 hadoop

(5)配置 hadoop 环境变量

[hadoop@node1 hadoop]$ sudo vim /etc/profile

在文件内容的末尾添加如下代码(注意:等号两侧不要有空格)。

export HADOOP\_HOME=/opt/module/hadoop/hadoop
export PATH=$PATH:$HADOOP\_HOME/bin:$HADOOP\_HOME/sbin

(6) 使配置生效 :

[hadoop@node1 software]$ source /etc/profile

(7) 校验

[hadoop@node1 software]$ hadoop version
Hadoop 3.3.4
Source code repository https://github.com/apache/hadoop.git -r a585a73c3e02ac62350c136643a5e7f6095a3dbb
Compiled by stevel on 2022-07-29T12:32Z
Compiled with protoc 3.7.1
From source with checksum fb9dd8918a7b8a5b430d61af858f6ec
This command was run using /opt/module/hadoop/hadoop-3.3.4/share/hadoop/common/hadoop-common-3.3.4.jar
[hadoop@node1 software]$ 

看到hadoop版本号输出,说明环境变量配置成功

2.配置Hadoop 集群

1)核心配置文件

配置core-site.xml

[hadoop@node1 bin]$ cd $HADOOP\_HOME/etc/hadoop
[hadoop@node1 hadoop]$  vim core-site.xml

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
<configuration>
<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9820</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop/hadoop-3.3.4/data</value>
    </property>
 
    <!-- 配置HDFS网页登录使用的静态用户为hadoop -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>
 
    <!-- 配置该hadoop(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>*</value>
    </property>
    <!-- 配置该hadoop(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
    </property>
    <!-- 配置该hadoop(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.hadoop.users</name>
        <value>*</value>
    </property>
</configuration>  

2)配置hdfs-site.xml

[hadoop@node1 hadoop]$ vim hdfs-site.xml                                                       

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>   
<configuration>
<!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
       	<value>node1:9870</value>
    </property>
    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node3:9868</value>
    </property>
</configuration>    

3)配置yarn-site.xml

[hadoop@node1 hadoop]$ vim yarn-site.xml

内容如下:

<?xml version="1.0"?>
<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
	</property>
    
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node2</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>
    
    <!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>


![img](https://img-blog.csdnimg.cn/img_convert/95ffbca45d93178379b356197c3da773.png)
![img](https://img-blog.csdnimg.cn/img_convert/d7eb658b3072710bfffa65bae75e1a65.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    
    <!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>


[外链图片转存中...(img-G12vv6J4-1715297513327)]
[外链图片转存中...(img-eCCtR4qE-1715297513328)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值