目录
1.配置模版虚拟机
1.安装模板虚拟机,IP地址 192.168.10.100****、主机名称**** hadoop100****、内存2**** G****、****硬盘20G(有需求的可以配置4G内存,50G硬盘)
2.hadoop100虚拟机配置要求(本文Linux系统以CentOS-7.5-x86_64-DVD-1804.iso为例)
(1)先看能否正常上网
root@hadoop100 \~\]# ping www.baidu.com
PING www.a.shifen.com (183.2.172.177) 56(84) bytes of data.
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=1 ttl=128 time=20.6 ms
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=2 ttl=128 time=21.3 ms
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=3 ttl=128 time=23.4 ms
*** ** * ** ***
(2)然后安装epel-release
\[root@hadoop100 \~\]# yum install -y epel-release
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
epel/x86_64/metalink \| 5.1 kB 00:00:00
\* epel: d2lzkl7pfhq30w.cloudfront.net
base \| 3.6 kB 00:00:00
extras \| 2.9 kB 00:00:00
updates \| 2.9 kB 00:00:00
Package epel-release-7-14.noarch already installed and latest version
Nothing to do
我这个是已经安装过了的
*** ** * ** ***
(3)检查是否有ifconfig和vim等命令,没有则下载
\[root@hadoop100 \~\]# yum install -y net-tools
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
\* epel: d2lzkl7pfhq30w.cloudfront.net
Resolving Dependencies
*** ** * ** ***
\[root@hadoop100 \~\]# yum install -y net-tools
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
\* epel: d2lzkl7pfhq30w.cloudfront.net
Resolving Dependencies
--\> Running transaction check
---\> Package net-tools.x86_64 0:2.0-0.22.20131004git.el7 will be updated
*** ** * ** ***
(4)关闭防火墙
\[root@hadoop100 \~\]# sudo systemctl stop firewalld
关闭防火墙
\[root@hadoop100 \~\]# sudo systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
关闭自启动
验证是否关闭防火墙
\[root@hadoop100 \~\]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Mon 2025-04-21 02:54:55 PDT; 3min 55s ago
Docs: man:firewalld(1)
Process: 677 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 677 (code=exited, status=0/SUCCESS)
Apr 21 02:43:14 hadoop100 systemd\[1\]: Starting firewalld - dynamic firewall daemon...
Apr 21 02:43:14 hadoop100 systemd\[1\]: Started firewalld - dynamic firewall daemon.
Apr 21 02:54:54 hadoop100 systemd\[1\]: Stopping firewalld - dynamic firewall daemon...
Apr 21 02:54:55 hadoop100 systemd\[1\]: Stopped firewalld - dynamic firewall daemon.
这个就显示已经关闭防火墙了,不过会开机自启
\[root@hadoop100 \~\]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
Apr 21 02:43:14 hadoop100 systemd\[1\]: Starting firewalld - dynamic firewall daemon...
Apr 21 02:43:14 hadoop100 systemd\[1\]: Started firewalld - dynamic firewall daemon.
Apr 21 02:54:54 hadoop100 systemd\[1\]: Stopping firewalld - dynamic firewall daemon...
Apr 21 02:54:55 hadoop100 systemd\[1\]: Stopped firewalld - dynamic firewall daemon.
这个则显示关闭防火墙,并且不会开机自启
如果你想打开防火墙,你可以
sudo systemctl start firewalld
如果要打开开机自启
sudo systemctl enable firewalld
*** ** * ** ***
(5)创建用户,并且更改密码,我用的是perf1,你们可以自由选择
\[root@hadoop100 \~\]# useradd perf1
\[root@hadoop100 \~\]# passwd perf1
Changing password for user perf1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
*** ** * ** ***
(6)给我们的用户添加root权限(添加免密功能),方便后期加sudo执行root权限的命令
\[root@hadoop100 \~\]# vim /etc/sudoers

在%wheel这行下面添加一行,
perf ALL=(ALL) NOPASSWD:ALL
要注意,不要添加到root下方,因为所有的用户都在%wheel组那里,如果添加到root下面,后面仍然还是要输密码
*** ** * ** ***
(7)在 /opt 目录下创建module、software文件夹,然后修改他们所属主和所属组
mkdir /opt/module
mkdir /opt/software
用这两串代码创建文件夹,然后
chown perf:perf /opt/module
chown perf:perf /opt/software
用这两串代码把他们的所属组和主都为自己的用户,我是perf,你们用自己的用户就好

*** ** * ** ***
(8)卸载虚拟机自带的jdk
\[root@hadoop100 \~\]# rpm -qa \| grep -i java \| xargs -n1 rpm -e --nodeps
rpm -qa:查询所安装的所有rpm软件包
grep -i:忽略大小写
xargs -n1:表示每次只传递一个参数
rpm -e --nodeps:强制卸载软件
*** ** * ** ***
(9)重启虚拟机
reboot
*** ** * ** ***
## 2.克隆虚拟机
1.在关闭hadoop100的条件下,克隆三个虚拟机,我的是命名为hadoop102,hadoop103,hadoop104
2.修改克隆机IP,以下以hadoop102举例说明
(1)修改克隆虚拟机的静态IP
\[root@hadoop102 \~\]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
改成
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
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="9687cc8e-3361-48c3-831d-bb57555426e0"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.10.102
GATEWAY=192.168.10.2
DNS1=192.168.10.2
*** ** * ** ***
你对照着改就好了,然后对应不同机子,就是不同的192.168.10.103-\>hadoop103。
(2)查看Linux虚拟机的虚拟网络编辑器,编辑-\>虚拟网络编辑器-\>VMnet8

进入管理员模式

然后把VMnet8改为NAT模式,把子网和掩码改好
进入NAT设置

检查一下是否有问题,然后点击确定
*** ** * ** ***
(3)接下来就是把Windows系统的系统适配器VMware Network Adapter VMnet8的IP地址改好
进入控制面板-\>网络和internet-\>网络和共享中心,然后点击更改适配器选项。

右键该配置,然后点击属性,找到ipv4的协议

然后点击属性

按照这样更改就好了,一定要保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
*** ** * ** ***
3.修改克隆机主机名,我以hadoop102举例说明
(1)修改主机名称
\[root@hadoop100 \~\]# vim /etc/hostname
hadoop102
(2)配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
\[root@hadoop100 \~\]# vim /etc/hosts
添加如下内容
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
*** ** * ** ***
然后重启(reboot)克隆机
4.修改windows的主机映射文件(hosts文件),不这样的话到时候无法直接在网页上用[hadoop102http://hadoop102:9870/](http://hadoop102:9870/ "hadoop102")
访问,到那时候也不要着急,因为你配置了前面的文件,你仍然可以用
[http://192.168.10.102/http://192.168.10.102:9870/](http://192.168.10.102:9870/ "http://192.168.10.102/")
访问你的hadoop
我举例window11
(1)进入C:\\Windows\\System32\\drivers\\etc路径
(2)拷贝hosts文件到桌面
(3)打开桌面hosts文件并添加如下内容
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
(4)将桌面hosts文件覆盖C:\\Windows\\System32\\drivers\\etc路径hosts文件
*** ** * ** ***
## 3.在hadoop102安装JDK
1.用XShell传输工具将JDK导入到opt目录下面的software文件夹下面
XShell和XFTP下载地址:
[家庭/学校免费 - NetSarang Website](https://www.xshell.com/zh/free-for-home-school/ "家庭/学校免费 - NetSarang Website")


我们直接把hadoop-3.4.1.tar.gz和jdk-8u441-linux-x64.tar.gz复制过去
*** ** * ** ***
2.在Linux系统下的software目录中查看软件包是否导入成功
\[perf@hadoop102 software\]$ cd /opt/software/
\[perf@hadoop102 software\]$ ll

*** ** * ** ***
3.解压我们的导入
tar -zxvf jdk-8u441-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.4.1.tar.gz -C /opt/module/
*** ** * ** ***
4.配置环境变量和hadoop
(1)新建/etc/profile.d/my_env.sh文件
\[perf@hadoop102 \~\]$ sudo vim /etc/profile.d/my_env.sh
添加如下内容
**#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_441
export PATH=$PATH:$JAVA_HOME/bin**
**#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.4.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin**
*** ** * ** ***
(2)保存后退出
**:wq**
*** ** * ** ***
(3)source一下/etc/profile文件,让新的环境变量PATH生效
\[perf@hadoop102 \~\]$ source /etc/profile
*** ** * ** ***
5.测试是否安装成功
\[perf@hadoop102 \~\]$ java -version
\[perf@hadoop102 hadoop-3.1.3\]$ hadoop version
出现以下内容,代表成功:

6.sudo reboot,重启,如果命令可以用,那就不要重启
## 4.完全分布式运行模式
1.SSH无密登录配置
(1)配置ssh
(1)基本语法
ssh另一台电脑的IP地址
(2)ssh连接时出现Host key verification failed的解决方法
\[perf@hadoop102 \~\]$ ssh hadoop103
如果出现如下内容
Are you sure you want to continue connecting (yes/no)?
输入yes,并回车
(3)退回到hadoop102
\[perf@hadoop103 \~\]$ exit
(2)无密钥配置
(1)
\[perf@hadoop102 \~\]$ cd /home/perf/.ssh/
\[perf@hadoop102 .ssh\]$ ll
total 16
-rw-------. 1 perf perf 1188 Mar 1 00:44 authorized_keys
-rw-------. 1 perf perf 1679 Mar 1 00:19 id_rsa
-rw-r--r--. 1 perf perf 396 Mar 1 00:19 id_rsa.pub
-rw-r--r--. 1 perf perf 558 Feb 28 23:08 known_hosts
\[perf@hadoop102 .ssh\]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
\[perf@hadoop102 .ssh\]$ ssh-copy-id hadoop102
\[perf@hadoop102 .ssh\]$ ssh-copy-id hadoop103
\[perf@hadoop102 .ssh\]$ ssh-copy-id hadoop104
然后分别在hadoop103和hadoop104的perf用户进行一样的操作,然后在hadoop102的root也做一个一样的。
*** ** * ** ***
2.集群配置
|------|-------------------|-----------------------------|----------------------------|
| | hadoop102 | hadoop103 | hadoop104 |
| HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
| YARN | NodeManager | ResourceManager NodeManager | NodeManager |
(1)核心配置文件
\[perf@hadoop102 .ssh\]$ cd $HADOOP_HOME/etc/hadoop
\[perf@hadoop102 hadoop\]$ vim core-site.xml
更改文件内容:
**\