Hadoop完全分布安装部署

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

【使用/软件/版本】

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的根目录下创建以下目录作为约定。
  1. 创建存放数据的目录:mkdir -p /export/data/
  2. 创建存放安装程序的目录:mkdir -p /export/servers/
  3. 创建存放安装包的目录:mkdir -p /export/software/
复制代码
(2)在虚拟机Hadoop1的/export/software目录上传JDK和Hadoop安装包并进行安装(红字按自己上传的安装包版本来写)。
  1. tar -zxvf /export/software/jdk-8u241-linux-x64.tar.gz -C /export/servers/
  2. tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers
复制代码
(3)在虚拟机Hadoop1执行“vi /etc/profile”命令编辑环境变量文件profile,在该文件的底部添加配置JDK体系环境变量的内容(留意看好自己的安装的文件名字(版本号))。
  1. export JAVA_HOME=/export/servers/jdk1.8.0_241
  2. export PATH=$PATH:$JAVA_HOME/bin
  3. export HADOOP_HOME=/export/servers/hadoop-3.3.0
  4. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
复制代码

(4)退出生存后初始化体系环境变量执行“source /etc/profile”

(5)修改hosts文件方便后续进行集群之间的映射,留意生存退出。
在虚拟机Hadoop1执行“vi /etc/hosts”命令编辑映射文件hosts,在配置文件中添加如下内容(根据自己三台的虚拟机的IP和用户名)。
  1. 192.168.121.161 hadoop1
  2. 192.168.121.162 hadoop2
  3. 192.168.121.163 hadoop3
复制代码

2.创建并配置两台虚拟机来做副节点

(1)在Hadoop1的基础上克隆两台虚拟机(完全克隆)
(2)修改主机名,修改两台台主机名称为 “hadoop2/hadoop3”
修改主机名称
  1. vi /etc/hostname
  2. 或者
  3. hostnamectl set-hostname hadoop2(根据自己虚拟机用户名进行修改)
复制代码
更改后可用
  1. hostname
复制代码
查看自己的用户名是否修改成功
(3)编辑虚拟机Hadoop2和3的网络配置文件ens33.nmconnection。
在两台虚拟机中分别执行下列命令
  1. vi /etc/NetworkManager/system-connections/ens33.nmconnection
复制代码
分别修改address1后的IP为192.168.121.162和192.168.121.163(根据自己情况进行修改)

(4)修改虚拟机Hadoop2和Hadoop3的uuid,uuid的作用是使分布式体系中的所有元素都有唯一的标识码。
  1. sed -i '/uuid=/c\uuid='`uuidgen`'' \ /etc/NetworkManager/system-connections/ens33.nmconnection
复制代码
(5)重启ens33网卡和重新加载网络配置文件
在虚拟机Hadoop2和3中执行“
  1. nmcli c reload
复制代码
”命令重新加载网络配置文件,以及执行“
  1. 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
依次输入下列命令:
  1. ssh-copy-id hadoop1
  2. ssh-copy-id hadoop2
  3. 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文件的底部添加如下内容。
  1. export JAVA_HOME=/export/servers/jdk1.8.0_241
  2. export HDFS_NAMENODE_USER=root
  3. export HDFS_DATANODE_USER=root
  4. export HDFS_SECONDARYNAMENODE_USER=root
  5. export YARN_RESOURCEMANAGER_USER=root
  6. export YARN_NODEMANAGER_USER=root
复制代码

(2)core-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi core-site.xml”命令添加如下内容。
  1. <property>
  2.      <name>fs.defaultFS</name>
  3.      <value>hdfs://hadoop1:9000</value>
  4. </property>
  5. <property>
  6.      <name>hadoop.tmp.dir</name>
  7.      <value>/export/data/hadoop-3.3.0</value>
  8. </property> <property>
  9.     <name>hadoop.http.staticuser.user</name>
  10.     <value>root</value>
  11. </property>
  12. <property>
  13.      <name>hadoop.proxyuser.root.hosts</name>
  14.      <value>*</value>
  15. </property>
  16. <property>
  17.      <name>hadoop.proxyuser.root.groups</name>
  18.      <value>*</value>
  19. </property>
  20. <property>
  21.      <name>fs.trash.interval</name>
  22.      <value>1440</value>
  23. </property>
复制代码

(3)hdfs-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi hdfs-site.xml”命令添加如下内容。
  1. <property>
  2. <name>dfs.replication</name>
  3. <value>2</value>
  4. </property>
  5. <property>
  6.      <name>dfs.namenode.secondary.http-address</name>
  7.      <value>hadoop2:9868</value>
  8. </property>
复制代码

(4)mapred-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi mapred-site.xml”命令添加如下内容。
  1. <property>
  2.      <name>mapreduce.framework.name</name>
  3.      <value>yarn</value>
  4. </property>
  5. <property>
  6.      <name>mapreduce.jobhistory.address</name>
  7.      <value>hadoop1:10020</value>
  8. </property>
  9. <property>
  10.     <name>mapreduce.jobhistory.Webapp.address</name>
  11.      <value>hadoop1:19888</value>
  12. </property>
  13. <property>
  14.      <name>yarn.app.mapreduce.am.env</name>
  15.      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  16. </property>
  17. <property>
  18.      <name>mapreduce.map.env</name>
  19.      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  20. </property>
  21. <property>
  22.      <name>mapreduce.reduce.env</name>
  23.   <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  24. </property>
复制代码

(5)yarn-site.xml
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi yarn-site.xml”命令添加如下内容。
  1. <property>
  2.      <name>yarn.resourcemanager.hostname</name>
  3.      <value>hadoop1</value>
  4. </property>
  5. <property>
  6.      <name>yarn.nodemanager.aux-services</name>
  7.      <value>mapreduce_shuffle</value>
  8. </property>
  9. <property>
  10.      <name>yarn.nodemanager.pmem-check-enabled</name>
  11.      <value>false</value>
  12. </property>
  13. <property>
  14.      <name>yarn.nodemanager.vmem-check-enabled</name>
  15.      <value>false</value>
  16. </property>
  17. <property>
  18.      <name>yarn.log-aggregation-enable</name>
  19.      <value>true</value>
  20. </property>
  21. <property>
  22.      <name>yarn.log.server.url</name>
  23.      <value>http://hadoop1:19888/jobhistory/logs</value>
  24. </property>
  25. <property>
  26.      <name>yarn.log-aggregation.retain-seconds</name>
  27.      <value>604800</value>
  28. </property>
复制代码

(6)配置Hadoop从节点服务器
在虚拟机Hadoop1的/export/servers/hadoop-3.3.0/etc/hadoop/目录,
执行“vi workers”命令,将workers文件默认的内容修改为如下内容。
  1. hadoop2
  2. hadoop3
复制代码

2. 分发Hadoop安装目录及体系环境变量文件

(1)使用scp命令将虚拟机Hadoop1的Hadoop安装目录分发至虚拟机Hadoop2和Hadoop3中存放安装步伐的目录。
向虚拟机Hadoop2中分发存放安装步伐的目录
  1. scp -r /export/servers/hadoop-3.3.0 root@hadoop2:/export/servers/
复制代码
向虚拟机Hadoop3中分发存放安装步伐的目录
  1. scp -r /export/servers/hadoop-3.3.0 root@hadoop3:/export/servers/
复制代码
(2)使用scp命令将虚拟机Hadoop1的体系环境变量文件profile分发至虚拟机Hadoop2和Hadoop3的/etc目录。
向虚拟机Hadoop2中分发/etc目录
  1. scp /etc/profile root@hadoop2:/etc
复制代码
向虚拟机Hadoop3中分发/etc目录
  1. scp /etc/profile root@hadoop3:/etc
复制代码
(3)执行“
  1. source /etc/profile
复制代码
”命令初始化体系环境变量
(4)格式化HDFS文件体系
在虚拟机Hadoop1执行“
  1. hdfs namenode -format
复制代码
”命令,对基于完全分布式模式部署的Hadoop进行格式化HDFS文件体系的操纵。
留意:格式化HDFS文件体系的操纵只在初次启动Hadoop集群之进步行。
3. 启动Hadoop

在虚拟机Hadoop1中执行命令启动Hadoop。
  1. 启动HDFS:start-dfs.sh
  2. 启动YARN:start-yarn.sh
  3. start-all.sh
复制代码

4. 查看Hadoop运行状态

分别在虚拟机Hadoop1、Hadoop2和Hadoop3执行“jps”命令查看Hadoop运行状态。

三、通过Web UI查看Hadoop运行状态

(1)关闭3台虚拟机的防火墙
关闭虚拟机Hadoop1、Hadoop2和Hadoop3的防火墙,分别在3台虚拟机中运行如下命令关闭防火墙并克制防火墙开启启动。
关闭防火墙
  1. systemctl stop firewalld
复制代码
克制防火墙开机启动
  1. systemctl stop firewalld
复制代码
(2)① 在本地计算机的欣赏器输入http://hadoop1:9870查看HDFS的运行状态。

② 在本地计算机的欣赏器输入http://hadoop1:8088查看YARN的运行状态

【见问题及解决】

问题:
                      ---遇到问题可以在批评区提出,如果比较范例我会补充在下面---

  • 因多次对Hadoop进行初始化大概会出现一系列问题,导致Hadoop集群启动失败。
解决方法:

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表