0


Hadoop完全分布安装部署

【使用/软件/版本】

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的运行状态

【见问题及解决】

问题:

                  ---遇到问题可以在评论区提出,如果比较典型我会补充在下面---
  1. 因多次对Hadoop进行初始化可能会出现一系列问题,导致Hadoop集群启动失败。

解决方法:

  1. 删除/export/data/hadoop-3.3.0/目录下的文件,然后仔细检查需要修改的Hadoop文件,然后重新格式化

本文转载自: https://blog.csdn.net/entaoSir/article/details/143364272
版权归原作者 涛Taotao 所有, 如有侵权,请联系我们删除。

“Hadoop完全分布安装部署”的评论:

还没有评论