目录
(3)把这个同步时间的操作添加到linux的crontab定时器中,每分钟执行一次
2、修改hadoop-env.sh文件,在文件末尾增加环境变量信息
3、修改core-site.xml文件,注意fs.defaultFS属性中的主机名需要和主节点的主机名保持一致
4、修改hdfs-site.xml文件,把hdfs中文件副本的数量设置为2,最多为2,因为现在集群中有两个从节点, 还有secondaryNamenode进程所在的节点信息
5、改mapred-site.xml,设置mapreduce使用的资源调度框架
6、改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单
8、修改启动脚本,分别修改 start-dfs.sh , stop-dfs.sh 这两个脚本文件,在文件前面增加如下内容
9、分别修改 start-yarn.sh , stop-yarn.sh 这两个脚本文件,在文件前面增加如下内容
(1)输入root账户及密码进入虚拟机hadoop2和hadoop3
2、启动集群,在hadoop1的/opt/module/hadoop-3.3目录下上执行如下命令
一、虚拟机的准备工作
1、软件、镜像包的下载
(1)虚拟机软件:本人所使用的虚拟机软件是VMware Workstation Pro 16.X
(2)虚拟机镜像:版本为CentOS-7-x86_64-DVD-2009.iso,官方链接为http://isoredirect.centos.org/centos/7/isos/x86_64/
(3)jdk1.8,官方下载链接为Java SE Development Kit 8 - Downloads (oracle.com)
(4)Hadoop3.3,下载地址为Index of /apache/hadoop/common (tsinghua.edu.cn)
同时也可以到我整理的阿里云盘中下载(我用阿里云盘分享了「整合资源」,你可以不限速下载? 复制这段内容打开「阿里云盘」App 即可获取 链接:https://www.aliyundrive.com/s/7UfZnZeJrWt),虚拟机软件则需要自行去找了,可以参考这篇文章(15条消息) 虚拟机VMware最详细下载与安装教程!_zp17834994071的博客-CSDN博客_csdn 虚拟机安装
2、虚拟机的创建及配置
略,可以参照我这篇文章(15条消息) CentOS7虚拟机的详细最小化安装_语仄无言的博客-CSDN博客
二、准备工作
1、添加映射关系
vi /etc/hosts
在最下面添加如下内容
192.168.168.110 hadoop1
192.168.168.111 hadoop2
192.168.168.112 hadoop3
如图
2、关闭和禁用防火墙
(1)直接关闭防火墙
systemctl stop firewalld
(2)禁止firewall开机启动
systemctl disable firewalld
(3)查看状态
systemctl status firewalld
3、关闭selinux
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled;最后要重启一下
重启命令为
reboot4、集群节点之间时间同步
集群只要涉及到多个节点的就需要对这些节点做时间同步,如果节点之间时间不同步相差太多,会影响集群的稳定性,甚至导致集群出问题。
(1)安装ntpdate
yum install -y ntpdate
(2)执行
ntpdate -u ntp.sjtu.edu.cn
确认是否可以正常执行
(3)把这个同步时间的操作添加到linux的crontab定时器中,每分钟执行一次
vi /etc/crontab
将以下内容加到最底部
* * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
:wq保存退出即可
三、JDK的安装
1、使用finalshell将下载好的jdk软件包上传到虚拟机中,按住拖动即可上传

2、创建jdk的安装目录
mkdir -p /opt/module/
3、到上传jdk的目录下将jdk解压
tar -zxvf jdk-8u301-linux-x64.tar.gz -C /opt/module/
4、到/opt/module/目录下修改jdk名称
cd /opt/module
mv jdk1.8.0_301/ jdk1.8
5、配置环境变量
vi /etc/profile
在最下方添加如下内容
export JAVA_HOME=/opt/module/jdk1.8
export PATH=${JAVA_HOME}/bin:$PATH
wq保存退出后source环境变量
source /etc/profile
6、检验jdk是否安装成功
java -version
显示如下内容则代表java安装完成
四、Hadoop的安装及配置
节点分配如下
| hadoop1 | hadoop2 | hadoop3 |
| NameNode | DataNode | DataNode |
| ResourceManager | NodeManager | NodeManager |
| SecondaryNameNode |
1、将Hadoop的安装包上传到虚拟机中,我这里直接上传到/opt/module/目录下

2、到/opt/module/目录下解压Hadoop安装包并修改名称
cd /opt/profile/
tar -zxvf hadoop-3.3.0.tar.gz
mv hadoop-3.3.0 hadoop-3.3
3、配置Hadoop的环境变量
vi /etc/profile
在最下方添加如下内容
export HADOOP_HOME=/opt/module/hadoop-3.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
wq保存退出后source环境变量
source /etc/profile
检验Hadoop是否安装成功
hadoop version
显示如下内容则表示安装成功

五、修改Hadoop核心配置文件
1、进入配置文件所在目录
cd /opt/module/hadoop-3.3/etc/hadoop/

2、修改hadoop-env.sh文件,在文件末尾增加环境变量信息
vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8
export HADOOP_LOG_DIR=/opt/module/hadoop-3.3/tmp/logs/hadoop
3、修改core-site.xml文件,注意fs.defaultFS属性中的主机名需要和主节点的主机名保持一致
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/module/hadoop-3.3/tmp</value>
</property></configuration>
4、修改hdfs-site.xml文件,把hdfs中文件副本的数量设置为2,最多为2,因为现在集群中有两个从节点, 还有secondaryNamenode进程所在的节点信息
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value></property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property></configuration>
5、改mapred-site.xml,设置mapreduce使用的资源调度框架
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property></configuration>
6、改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单
注意,针对分布式集群在这个配置文件中还需要设置resourcemanager的hostname,否则 nodemanager找不到resourcemanager节点。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
</configuration>
7、修改workers文件
vi workers
#原有的删掉,增加如下内容
hadoop2
hadoop3
8、修改启动脚本,分别修改 start-dfs.sh , stop-dfs.sh 这两个脚本文件,在文件前面增加如下内容
cd /opt/module/hadoop-3.3/sbin
#注意是分别修改,也就是在这两个文件下都添加下面的内容
vi start-dfs.sh
vi stop-dfs.sh
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
9、分别修改 start-yarn.sh , stop-yarn.sh 这两个脚本文件,在文件前面增加如下内容
vi start-yarn.sh
vi stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
六、克隆虚拟机
1、将主机进行关机
输入
poweroff
命令可将虚拟机进行关机
2、开始克隆两台虚拟机
在这个界面选择hadoop1,点击鼠标右键,点击管理-克隆

一直下一页直到这一页,点创建完整克隆,下一页
更改虚拟机名称及位置信息
克隆完成,点关闭即可

照着这种方式克隆两台,分别为hadoop2,hadoop3,随后将三台虚拟机开启
3、修改克隆后的虚拟机的主机名和ip地址
(1)输入root账户及密码进入虚拟机hadoop2和hadoop3


(2)在hadoop2中修改主机名
vi /etc/hostname
将里面的hadoop1改为hadoop2

(3)在hadoop2中修改IP地址
vi /etc/sysconfig/entwork-scripts/ifcfg-ens33
将BOOTPROTO改成static
将IPADDR改为192.168.168.111

随后保存退出,输入reboot重启虚拟机,重启进入后可以看到主机名及IP的修改均已生效
这时就可以用FinalShell连接hadoop2了
(4)照着上面(2)、(3)的步骤再克隆一台hadoop3
注意:主机名要改成hadoop3,IP地址要改成192.168.168.112
4、设置虚拟机的免密登录
(1)先在haodoop1上执行
ssh-keygen -t rsa
rsa表示的是一种加密算法
注意:执行这个命令以后,需要连续按 4 次回车键回到 linux 命令行才表示这个操作执行 结束, 在按回车的时候不需要输入任何内容。

执行以后会在~/.ssh目录下生产对应的公钥和秘钥文件 
下一步是把公钥拷贝到需要免密码登录的机器上面,过程中会提示要输入yes和密码,输入即可
ssh-copy-id hadoop2
ssh-copy-id hadoop3
后就可以通过ssh 免密码登录到hadoop2和hadoop3机器了

七、启动Hadoop集群
1、在hadoop1节点上格式化HDFS
cd /opt/module/hadoop-3.3
bin/hdfs namenode -format
如果在后面的日志信息中能看到这一行,则说明namenode格式化成功。
common.Storage: Storage directory /data/hadoop_repo/dfs/name has been successf
2、启动集群,在hadoop1的/opt/module/hadoop-3.3目录下上执行如下命令
sbin/start-all.sh
3、验证是否启动成功
在hadoop1下输入jps验证

在hadoop2下输入jps验证

在hadoop3下输入jps验证

显示如上就表示完全分布式集群已经成功搭建

