hadoop集群添加新节点

首先参考实验5进行一个slave节点的hadoop集群搭建

在此介绍向集群中添加新的slave节点

由于开始已经有一个slave节点,所以可以克隆节点

克隆HadoopSlave虚拟机

实验一详细 - 图1

在左侧列表栏的HadoopSlave上依次点击右键->管理->克隆

实验一详细 - 图2

选择“创建完整克隆”,点击“下一步”

实验一详细 - 图3

虚拟机名称填写为“HadoopSlave2”,位置填写为“D:\ HadoopSlave2”点击“完成”

配置运行环境

  1. HadoopSlave2静态IP配置
  2. 修改新节点的ip和主机名对应关系,修改/etc/hosts配置文件,定义ip与hostname的映射。
  3. 配置新节点ssh免密码登录,使得master可以免密码登录到新节点主机。

HadoopSlave2静态IP配置

主要内容:

HadoopSlave2虚拟机设置静态IP:192.168.79.131

要求:配置好的虚拟机网络互通,虚拟机和宿主机网络互通,能在虚拟机上使用浏览器访问互联网。

HadoopSlave2静态IP配置

单键点击红框所示的网络图标

实验一详细 - 图4

点击”有线设置”

实验一详细 - 图5

出现如下对话框,点击设置按钮

实验一详细 - 图6

出现如下对话框后选IPv4选项卡

实验一详细 - 图7

选“手动”

HadoopSlave2虚拟机

Address:填静态IP地址,如:192.168.79.131

NetMask:填网络掩码,如:255.255.255.0

Gateway:填子网网关,如:192.168.79.2。可在VMware的网络配置中配置子网网关

DNS servers:填DNS服务器,如:192.168.79.2。

重启HadoopSlave2虚拟机网络,并验证静态IP配置是否正确;

  1. [hfut@slave2 ~]$ su root
  2. [root@slave2 hfut]# systemctl restart network
  3. [root@slave2 hfut]# ifconfig

实验一详细 - 图8

测试

测试HadoopMaster虚拟机能否ping通HadoopSlave2虚拟机

  1. [hfut@master ~]$ ping 192.168.79.131

实验一详细 - 图9

测试HadoopSlave2虚拟机能否ping通HadoopMaster虚拟机

  1. [hfut@slave2 ~]$ ping 192.168.79.129

实验一详细 - 图10

测试HadoodSlave2虚拟机能否连通互联网

实验一详细 - 图11

修改新节点的ip和主机名对应关系

配置主机名

使用vi编辑主机名。

  1. [root@slave2 hfut]# vi /etc/sysconfig/network

实验一详细 - 图12

  1. ETWORKING=yes
  2. HOSTNAME=slave2
  3. # Created by anaconda

检测主机名是否修改成功命令如下,在操作之前需要关闭当前终端,重新打开一个终端:

  1. [hfut@slave2 ~]$ hostname

实验一详细 - 图13

配置hosts列表

该项也需要在HadoopMaster、HadoopSlave节点配置

需要在root用户下(使用su命令),编辑主机名列表的命令:

  1. [root@slave2 hfut]# vi /etc/hosts

将下面三行添加到/etc/hosts文件中:

  1. 192.168.79.129 master
  2. 192.168.79.130 slave
  3. 192.168.79.131 slave2

验证是否配置成功的命令是:

  1. [root@slave2 hfut]# ping master

实验一详细 - 图14

  1. [root@slave2 hfut]# ping slave

实验一详细 - 图15

如果出现上图的信息表示配置成功。

配置新节点ssh免密码登录

主要内容:

master节点能ssh免密登录到slave2节点

SSH免密匙登录的原理与方法

实验一详细 - 图16

SSH免密匙登录的方法

配置主机A免密登录到主机B

① 在主机A生产密钥对: ssh-keygen -t rsa, 会在.ssh目录下产生密钥文件

② 拷贝主机A的公钥到主机B: scp id_rsa.pub

③ 将主机A的公钥加到主机B的授权列表.ssh/authorized_keys(若不存在,手动创建): cat id_rsa.pub >> authorized_keys

④ .ssh目录的权限必须是700,授权列表authorized_keys的权限必须是600(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能)。另一件事是用root用户设置”/etc/ssh/sshd_config”的内容。使其无密码登录有效。

slave2 SSH免密匙登录配置

以下步骤在所有节点执行

修改known_hosts

  1. [root@slave2 hfut]# vi /home/hfut/.ssh/known_hosts

修改成如下格式

  1. aster,192.168.79.129 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNFLug4rtJxTu2mn5fMRC0BRFTzRK9I7SswbBKdaODKBXRVw/9ZT8u8kIqpJ8Vd1HPZsqJVkuRqW0wO41eXtWz4=
  2. slave,192.168.79.130 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNFLug4rtJxTu2mn5fMRC0BRFTzRK9I7SswbBKdaODKBXRVw/9ZT8u8kIqpJ8Vd1HPZsqJVkuRqW0wO41eXtWz4=
  3. slave2,192.168.79.131 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNFLug4rtJxTu2mn5fMRC0BRFTzRK9I7SswbBKdaODKBXRVw/9ZT8u8kIqpJ8Vd1HPZsqJVkuRqW0wO41eXtWz4=

实验一详细 - 图17

esc 后:wq保存

验证免密匙登录

验证master节点ssh免密登录slave节点,在HadoopMaster机器上执行下面的命令:

  1. [hfut@master ~]$ ssh slave2

如果出现下图的内容表示免密匙配置成功:

实验一详细 - 图18

在终端从已登录slave2节点退回master节点,在HadoopMaster机器上执行下面的命令:

  1. [hfut@slave ~]$ exit

验证master节点ssh免密登录master节点,在HadoopMaster机器上执行下面的命令

  1. [hfut@master ~]$ ssh master

实验一详细 - 图19

成功验证master节点可以ssh免密登录slave2节点和master节点。

修改集群所有节点相关配置文件

在master节点配置slaves文件

转到hadoop-3.2.2中

  1. [hfut@master ~]$ cd hadoop-3.2.2

使用gedit编辑:

  1. [hfut@master Hadoop-3.2.2]$ gedit ~/hadoop-3.2.2/etc/hadoop/workers

用下面的代码替换slaves中的内容:

  1. slave
  2. slave2

实验一详细 - 图20

更改clusterID

首先关闭集群

  1. [hfut@master ~]$ stop-all.sh

然后HadoopSlave2进入root修改/home/hfut/hadoopdata/dfs/data/current/VERSION

  1. [root@slave2 hfut]# vi /home/hfut/hadoopdata/dfs/data/current/VERSION

修改为

  1. #Mon May 23 13:06:31 CST 2022
  2. storageID=DS-fe918e74-5358-4a11-9df4-ccfdad438391
  3. clusterID=CID-a3d4ea46-a15e-4e95-859a-6cc994ce57e5
  4. cTime=0
  5. datanodeUuid=143135fb-e43c-49da-a34c-21cb88799ebc
  6. storageType=DATA_NODE
  7. layoutVersion=-57

实验一详细 - 图21

启动Hadoop集群

启动Hadoop

使用start-all.sh启动Hadoop集群,首先进入Hadoop安装主目录,然后执行启动命令:

  1. [hfut@master ~]$ start-all.sh

查看进程是否启动

在HadoopMaster的终端执行jps命令,在打印结果中会看到4个进程,分别是ResourceManager、Jps、NameNode和SecondaryNameNode,如下图所示。如果出现这4个进程表示主节点进程启动成功。

实验一详细 - 图22

在HadoopSlave、HadoopSlave2的终端执行jps命令,在打印结果中会看到3个进程,分别是Nodemanager、Datanode和Jps,如下图所示。如果出现这3个进程表示主节点进程启动成功。

实验一详细 - 图23

Web UI查看集群是否成功启动

  1. 在HadoopMaster上启动Firefox浏览器,在浏览器地址栏中输入http://master:9870/,检查namenode和datanode是否正常。UI页面如下图所示。

实验一详细 - 图24

可见Datanode Information中的节点有两个

  1. 在HadoopMaster上启动Firefox浏览器,在浏览器地址栏中输入http://master:8088/,检查Yarn是否正常。页面如下图所示。

实验一详细 - 图25

出错和解决办法

hadoop集群通过web管理界面只显示一个节点,datanode只启动一个

hadoop集群搭建三台机器,一台master,2台slave,slave1,slave2。slave复制了一台重新命名为slave2(这是在hadoop格式化之后复制的,VERSION的信息就一起过去了),导致datanode的VERSION里面有2个id是一样的,datanodeUuid和storageID,因此在看到一个datanode。

解决办法

手动修改slave1的VERSION文件,路径是/usr/local/src/hadoop-2.6.1/tmp/dfs/data/current/VERSION
修改之后,重启hdfs集群。

原文链接:hadoop__WebUI只显示一个datanode - Lucas_zhao - 博客园 (cnblogs.com)

Starting nodemanagerslocalhost: mv: 无法获取‘/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-ha

启动集群时(myhadoop.sh start)报错如下:

  1. Starting nodemanagers
  2. localhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out.4' 的文件状态(stat): 没有那个文件或目录
  3. localhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out.2' 的文件状态(stat): 没有那个文件或目录
  4. localhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out.1' 的文件状态(stat): 没有那个文件或目录
  5. localhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out' 的文件状态(stat): 没有那个文件或目录

解决办法:

  1. 先进入hadoop-3.2.2路径
    1. cd /hadoop-3.2.2/
  1. 再进入该etc下的hadoop
    1. cd etc/hadoop
  1. 最后打开workers文件删除第一行的localhost并保存退出
    1. vim workers

之后再启动集群就不会报错