【使用/软件/版本】
VMware Workstation Pro 17、MobaXterm(SSH客户端软件)、Centos 9系统
Hadoop版本为3.3.0、JDK版本为jdk-8u241
【Hadoop完全分布式部署详细步骤】
推荐全程使用SSH客户端,原生无可视化的Linux无法粘贴,而这次很多内容都需要粘贴
一、前置环境设置
1.创建并配置主节点虚拟机(该虚拟机已提前配置好静态IP)
“不会安装虚拟机或者配静态IP,在CSDN上有很多可以搜到,或者过几天我自己总结一个在这套个链接”
(1)先创建一台虚拟机hadoop1(名字按自己像设置的来),在虚拟机Hadoop1的根目录下创建以下目录作为约定。
创建存放数据的目录:mkdir -p /export/data/
创建存放安装程序的目录:mkdir -p /export/servers/
创建存放安装包的目录:mkdir -p /export/software/
(2)在虚拟机Hadoop1的/export/software目录上传JDK和Hadoop安装包并进行安装(红字按自己上传的安装包版本来写)。
tar -zxvf /export/software/jdk-8u241-linux-x64.tar.gz -C /export/servers/
tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers
(3)在虚拟机Hadoop1执行“vi /etc/profile”命令编辑环境变量文件profile,在该文件的底部添加配置JDK系统环境变量的内容(注意看好自己的安装的文件名字(版本号))。
export JAVA_HOME=/export/servers/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/export/servers/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(4)退出保存后初始化系统环境变量执行“source /etc/profile”
(5)修改hosts文件方便后续进行集群之间的映射,注意保存退出。
在虚拟机Hadoop1执行“vi /etc/hosts”命令编辑映射文件hosts,在配置文件中添加如下内容(根据自己三台的虚拟机的IP和用户名)。
192.168.121.161 hadoop1
192.168.121.162 hadoop2
192.168.121.163 hadoop3
2.创建并配置两台虚拟机来做副节点
(1)在Hadoop1的基础上克隆两台虚拟机(完全克隆)
**(2)修改主机名,修改两台台主机名称为 “hadoop2/hadoop3” **
修改主机名称
vi /etc/hostname
或者
hostnamectl set-hostname hadoop2(根据自己虚拟机用户名进行修改)
更改后可用
hostname
查看自己的用户名是否修改成功
(3)编辑虚拟机Hadoop2和3的网络配置文件ens33.nmconnection。
在两台虚拟机中分别执行下列命令
vi /etc/NetworkManager/system-connections/ens33.nmconnection
分别修改address1后的IP为192.168.121.162和192.168.121.163(根据自己情况进行修改)
(4)修改虚拟机Hadoop2和Hadoop3的uuid,uuid的作用是使分布式系统中的所有元素都有唯一的标识码。
sed -i '/uuid=/c\uuid='`uuidgen`'' \ /etc/NetworkManager/system-connections/ens33.nmconnection
(5)重启ens33网卡和重新加载网络配置文件
在虚拟机Hadoop2和3中执行“
nmcli c reload
”命令重新加载网络配置文件,以及执行“
nmcli c up ens33
”命令重启ens33网卡,使修改后的网络配置文件生效。
(6)通过执行“ip addr”命令查看虚拟机Hadoop2和3的网络信息,验证网络配置文件是否修改成功。
3. 虚拟机免密登录设置
在集群环境中,主节点需要频繁的访问从节点,以获取从节点的运行状态,主节点每次访问从节点时都需要通过输入密码的方式进行验证,确定密码输入正确后才建立连接,这会对集群运行的连续性造成不良影响,为主节点配置SSH免密登录功能,可以有效避免访问从节点时频繁输入密码。接下来,虚拟机Hadoop1作为集群环境的主节点实现SSH免密登录。
(1)在虚拟机Hadoop1中执行“ssh-keygen -t rsa”命令,生成密钥。
(执行命令生成密钥,并根据提示连续按四次Enter确认,有一次需要输入y)
(2)在虚拟机Hadoop1中执行“cd /root/.ssh/”命令进入存储密钥文件的目录,在该目录下执行“ll”命令查看密钥文件。
(3)将虚拟机Hadoop1生成的公钥文件复制到集群中相关联的所有虚拟机,实现通过虚拟机Hadoop1可以免密登录虚拟机Hadoop1、Hadoop2和Hadoop3
依次输入下列命令:
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
(4)在虚拟机Hadoop1中执行“ssh hadoop2”命令访问虚拟机Hadoop2,验证虚拟机Hadoop1是否可以免密登录虚拟机Hadoop2。(执行exit可退出Hadoop2的连接)
二、基于完全分布式模式部署Hadoop
1. 修改Hadoop配置文件
(1)hadoop-env.sh
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi hadoop-env.sh”命令,在hadoop-env.sh文件的底部添加如下内容。
export JAVA_HOME=/export/servers/jdk1.8.0_241
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
(2)core-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi core-site.xml”命令添加如下内容。
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property> <property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
(3)hdfs-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi hdfs-site.xml”命令添加如下内容。
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:9868</value>
</property>
(4)mapred-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi mapred-site.xml”命令添加如下内容。
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.Webapp.address</name>
<value>hadoop1:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
(5)yarn-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi yarn-site.xml”命令添加如下内容。
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop1:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
(6)配置Hadoop从节点服务器
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi workers”命令,将workers文件默认的内容修改为如下内容。
hadoop2
hadoop3
2. 分发Hadoop安装目录及系统环境变量文件
(1)使用scp命令将虚拟机Hadoop1的Hadoop安装目录分发至虚拟机Hadoop2和Hadoop3中存放安装程序的目录。
向虚拟机Hadoop2中分发存放安装程序的目录
scp -r /export/servers/hadoop-3.3.0 root@hadoop2:/export/servers/
向虚拟机Hadoop3中分发存放安装程序的目录
scp -r /export/servers/hadoop-3.3.0 root@hadoop3:/export/servers/
(2)使用scp命令将虚拟机Hadoop1的系统环境变量文件profile分发至虚拟机Hadoop2和Hadoop3的/etc目录。
向虚拟机Hadoop2中分发/etc目录
scp /etc/profile root@hadoop2:/etc
向虚拟机Hadoop3中分发/etc目录
scp /etc/profile root@hadoop3:/etc
(3)执行“
source /etc/profile
”命令初始化系统环境变量
(4)格式化HDFS文件系统
在虚拟机Hadoop1执行“
hdfs namenode -format
”命令,对基于完全分布式模式部署的Hadoop进行格式化HDFS文件系统的操作。
注意:格式化HDFS文件系统的操作只在初次启动Hadoop集群之前进行。
3. 启动Hadoop
在虚拟机Hadoop1中执行命令启动Hadoop。
启动HDFS:start-dfs.sh
启动YARN:start-yarn.sh
或
start-all.sh
4. 查看Hadoop运行状态
分别在虚拟机Hadoop1、Hadoop2和Hadoop3执行“jps”命令查看Hadoop运行状态。
三、通过Web UI查看Hadoop运行状态
(1)关闭3台虚拟机的防火墙
关闭虚拟机Hadoop1、Hadoop2和Hadoop3的防火墙,分别在3台虚拟机中运行如下命令关闭防火墙并禁止防火墙开启启动。
关闭防火墙
systemctl stop firewalld
禁止防火墙开机启动
systemctl stop firewalld
(2)① 在本地计算机的浏览器输入http://hadoop1:9870查看HDFS的运行状态。
② 在本地计算机的浏览器输入http://hadoop1:8088查看YARN的运行状态
【见问题及解决】
问题:
---遇到问题可以在评论区提出,如果比较典型我会补充在下面---
- 因多次对Hadoop进行初始化可能会出现一系列问题,导致Hadoop集群启动失败。
解决方法:
- 删除/export/data/hadoop-3.3.0/目录下的文件,然后仔细检查需要修改的Hadoop文件,然后重新格式化
版权归原作者 涛Taotao 所有, 如有侵权,请联系我们删除。