一、前期准备
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。
(5)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址。
(6)保证Linux文件中IP地址、Linux虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
1.2 修改主机名
(1)修改主机名称,添加自己本虚拟机的主机名,保存。
[yl@hadoop1 ~]$ sudo vim /etc/hostname
(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