一、前期准备

1.1前期准备

(1)准备三台虚拟机(这里以CentOS8为例),虚拟机配置要求如下:
单台虚拟机:内存4G,硬盘50G,集群规划:

hadoop1

hadoop2

hadoop3

HDFS

NameNode

SecondaryNameNode

HDFS

DataNode

DataNode

DataNode

Yarn

Resourcemanager

Yarn

NodeManager

NodeManager

NodeManager

(2)安装必要环境(三台虚拟机都需要安装),如下。

[yl@hadoop1 ~]# sudo yum install -y epel-release
[yl@hadoop1 ~]# sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git

(3) 修改虚拟机的静态IP(三台虚拟机都需要操作)。

[yl@hadoop1 ~]# sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#一般安装完默认是dhcp,改成static
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cc281c00-0d44-4b58-821e-87c0cd1be41d
DEVICE=ens33
ONBOOT=yes
#ip地址
IPADDR=192.168.1.11
#网关
GATEWAY=192.168.1.2
#DNS
DNS1=192.168.1.2

(4)查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8。

一台服务器搭建Hadoop需要多少资源_一台服务器搭建Hadoop需要多少资源


一台服务器搭建Hadoop需要多少资源_大数据_02


(5)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址。

一台服务器搭建Hadoop需要多少资源_hadoop_03


(6)保证Linux文件中IP地址、Linux虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。

1.2 修改主机名

(1)修改主机名称,添加自己本虚拟机的主机名,保存。

[yl@hadoop1 ~]$ sudo vim /etc/hostname

一台服务器搭建Hadoop需要多少资源_大数据_04


(2)配置主机名称映射。

[yl@hadoop1 ~]# sudo vim /etc/hosts

添加如下内容

192.168.1.11 hadoop1
192.168.1.22 hadoop2
192.168.1.33 hadoop3

(3)修改window10/7的主机映射文件(hosts文件)。
(a)进入C:\Windows\System32\drivers\etc路径;
(b)拷贝hosts文件到桌面;
(c)打开桌面hosts文件并添加如下内容;

192.168.1.11 hadoop1
192.168.1.22 hadoop2
192.168.1.33 hadoop3

(d)将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件。
(4)关闭防火墙

[yl@hadoop1 ~]# sudo systemctl stop firewalld
[yl@hadoop1 ~]# sudo systemctl disable firewalld

(5)创建一个个人用户

[yl@hadoop1 ~]# sudo useradd yl
[yl@hadoop1 ~]# sudo passwd 123456

(6)配置yl用户具有root权限(在root用户下操作)

vim /etc/sudoers

在root下面添加一行,如下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
yl   ALL=(ALL)     ALL

(7)在/opt目录下创建module、software文件夹

[yl@hadoop1 opt]# sudo mkdir module
[yl@hadoop1 opt]# sudo mkdir software

修改module、software文件夹的所有者cd

[yl@hadoop1 opt]# sudo mkdir /opt/module /opt/software
[yl@hadoop1 opt]# sudo chown yl:yl /opt/module /opt/software

(8)以上操作三台虚拟机都需要执行操作一遍。

二.安装JDK

1.将JDK安装包上传到software中,解压到module文件,解压命令:

[yl@hadoop1 software]# tar -zxvf jdk-8u261-linux-x64.tar.gz -C /opt/module/

2.配置JDK环境变量
(1)新建/etc/profile.d/my_env.sh文件

[yl@hadoop1 module]# sudo vim /etc/profile.d/my_env.sh

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin

(2)保存后退出
(3)重启xshell窗口,或者输入如下命令,让环境变量生效。

source /etc/profile

(4)测试JDK是否安装成功

[yl@hadoop1 module]# java -version

如果能看到以下结果,则Java正常安装
java version “1.8.0_261”
(5)以上操作三台虚拟机都需要执行操作一遍。

三.安装hadoop

1.将hadoop安装包上传到software中,解压到module文件,解压命令:

[yl@hadoop1 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

2.查看是否解压成功

[yl@hadoop1 software]$ ls /opt/module/
hadoop-3.1.3

3.将Hadoop添加到环境变量
(1)获取Hadoop安装路径

[yl@hadoop1 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.3

(2)打开/etc/profile.d/my_env.sh文件

[yl@hadoop1 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh

在文件末尾添加hadoop路径:(shift+g)

##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

(3)让修改后的文件生效

[yl@ hadoop1 hadoop-3.1.3]$ source /etc/profile

(4)测试是否安装成功

[yl@hadoop1 hadoop-3.1.3]$ hadoop version
Hadoop 3.1.3

(5)以上操作三台虚拟机都需要执行操作一遍。

四.hadoop核心配置

1.进入配置文件夹

[yl@hadoop1 .ssh]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/

(1)配置core-site.xml

[yl@hadoop1 hadoop]$ vim core-site.xml

文件内容如下:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <property>
        <name>hadoop.proxyuser.yl.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.yl.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>yl</value>
    </property>
</configuration>

(2)配置hdfs-site.xml

[yl@hadoop1 hadoop]$ vim hdfs-site.xml

文件内容如下:

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop3:9868</value>
    </property>
<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
</configuration>

(3)配置yarn-site.xml

[yl@hadoop1 hadoop]$ vim yarn-site.xml

文件内容如下:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop2</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>
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

(4)配置mapred-site.xml

[yl@hadoop1 hadoop]$ vim mapred-site.xml

文件内容如下:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

五.配置SSH免密登录

1.配置SSH免密登录
(1)生成公钥和私钥:

[yl@hadoop1 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(2)将公钥拷贝到要免密登录的目标机器上

[yl@hadoop1 .ssh]$ ssh-copy-id hadoop1
[yl@hadoop1 .ssh]$ ssh-copy-id hadoop2
[yl@hadoop1 .ssh]$ ssh-copy-id hadoop3

注意:
还需要在hadoop2、hadoop3上采用root账号,配置一下无密登录到hadoop1、hadoop2、hadoop3;
还需要在hadoop2、hadoop3上采用yl账号配置一下无密登录到hadoop1、hadoop2、hadoop3服务器上。
2.将hadoop配置文件分发到集群各个虚拟机上。

[yl@hadoop1 ~]$ rsync -av /opt/module/hadoop/etc/hadoop yl@hadoop2:/opt/module/hadoop/etc/hadoop 
[yl@hadoop1 ~]$ rsync -av /opt/module/hadoop/etc/hadoop yl@hadoop3:/opt/module/hadoop/etc/hadoop

3.配置workers

[yl@hadoop1 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:
hadoop1
hadoop2
hadoop3

六.启动集群

(1)如果集群是第一次启动,需要在hadoop1节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

[yl@hadoop1 hadoop-3.1.3]$ bin/hdfs namenode -format

(2)启动HDFS

[yl@hadoop1 hadoop-3.1.3]$ sbin/start-dfs.sh

(3)在配置了ResourceManager的节点(hadoop103)启动YARN

[yl@hadoop1 hadoop-3.1.3]$ sbin/start-yarn.sh

(4)Web端查看HDFS的Web页面:http://hadoop1:9870/
(5)Web端查看SecondaryNameNode的Web页面:http://hadoop3:9868/status.html