hadoop集群添加新节点
首先参考实验5进行一个slave节点的hadoop集群搭建
在此介绍向集群中添加新的slave节点
由于开始已经有一个slave节点,所以可以克隆节点
克隆HadoopSlave虚拟机

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

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

虚拟机名称填写为“HadoopSlave2”,位置填写为“D:\ HadoopSlave2”点击“完成”
配置运行环境
- HadoopSlave2静态IP配置
- 修改新节点的ip和主机名对应关系,修改/etc/hosts配置文件,定义ip与hostname的映射。
- 配置新节点ssh免密码登录,使得master可以免密码登录到新节点主机。
HadoopSlave2静态IP配置
主要内容:
HadoopSlave2虚拟机设置静态IP:192.168.79.131
要求:配置好的虚拟机网络互通,虚拟机和宿主机网络互通,能在虚拟机上使用浏览器访问互联网。
HadoopSlave2静态IP配置
单键点击红框所示的网络图标

点击”有线设置”

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

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

选“手动”
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配置是否正确;
[hfut@slave2 ~]$ su root[root@slave2 hfut]# systemctl restart network[root@slave2 hfut]# ifconfig

测试
测试HadoopMaster虚拟机能否ping通HadoopSlave2虚拟机
[hfut@master ~]$ ping 192.168.79.131

测试HadoopSlave2虚拟机能否ping通HadoopMaster虚拟机
[hfut@slave2 ~]$ ping 192.168.79.129

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

修改新节点的ip和主机名对应关系
配置主机名
使用vi编辑主机名。
[root@slave2 hfut]# vi /etc/sysconfig/network

ETWORKING=yesHOSTNAME=slave2# Created by anaconda
检测主机名是否修改成功命令如下,在操作之前需要关闭当前终端,重新打开一个终端:
[hfut@slave2 ~]$ hostname

配置hosts列表
该项也需要在HadoopMaster、HadoopSlave节点配置
需要在root用户下(使用su命令),编辑主机名列表的命令:
[root@slave2 hfut]# vi /etc/hosts
将下面三行添加到/etc/hosts文件中:
192.168.79.129 master192.168.79.130 slave192.168.79.131 slave2
验证是否配置成功的命令是:
[root@slave2 hfut]# ping master

[root@slave2 hfut]# ping slave

如果出现上图的信息表示配置成功。
配置新节点ssh免密码登录
主要内容:
master节点能ssh免密登录到slave2节点
SSH免密匙登录的原理与方法

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
[root@slave2 hfut]# vi /home/hfut/.ssh/known_hosts
修改成如下格式
aster,192.168.79.129 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNFLug4rtJxTu2mn5fMRC0BRFTzRK9I7SswbBKdaODKBXRVw/9ZT8u8kIqpJ8Vd1HPZsqJVkuRqW0wO41eXtWz4=slave,192.168.79.130 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNFLug4rtJxTu2mn5fMRC0BRFTzRK9I7SswbBKdaODKBXRVw/9ZT8u8kIqpJ8Vd1HPZsqJVkuRqW0wO41eXtWz4=slave2,192.168.79.131 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNFLug4rtJxTu2mn5fMRC0BRFTzRK9I7SswbBKdaODKBXRVw/9ZT8u8kIqpJ8Vd1HPZsqJVkuRqW0wO41eXtWz4=

esc 后:wq保存
验证免密匙登录
验证master节点ssh免密登录slave节点,在HadoopMaster机器上执行下面的命令:
[hfut@master ~]$ ssh slave2
如果出现下图的内容表示免密匙配置成功:

在终端从已登录slave2节点退回master节点,在HadoopMaster机器上执行下面的命令:
[hfut@slave ~]$ exit
验证master节点ssh免密登录master节点,在HadoopMaster机器上执行下面的命令
[hfut@master ~]$ ssh master

成功验证master节点可以ssh免密登录slave2节点和master节点。
修改集群所有节点相关配置文件
在master节点配置slaves文件
转到hadoop-3.2.2中
[hfut@master ~]$ cd hadoop-3.2.2
使用gedit编辑:
[hfut@master Hadoop-3.2.2]$ gedit ~/hadoop-3.2.2/etc/hadoop/workers
用下面的代码替换slaves中的内容:
slaveslave2

更改clusterID
首先关闭集群
[hfut@master ~]$ stop-all.sh
然后HadoopSlave2进入root修改/home/hfut/hadoopdata/dfs/data/current/VERSION
[root@slave2 hfut]# vi /home/hfut/hadoopdata/dfs/data/current/VERSION
修改为
#Mon May 23 13:06:31 CST 2022storageID=DS-fe918e74-5358-4a11-9df4-ccfdad438391clusterID=CID-a3d4ea46-a15e-4e95-859a-6cc994ce57e5cTime=0datanodeUuid=143135fb-e43c-49da-a34c-21cb88799ebcstorageType=DATA_NODElayoutVersion=-57

启动Hadoop集群
启动Hadoop
使用start-all.sh启动Hadoop集群,首先进入Hadoop安装主目录,然后执行启动命令:
[hfut@master ~]$ start-all.sh
查看进程是否启动
在HadoopMaster的终端执行jps命令,在打印结果中会看到4个进程,分别是ResourceManager、Jps、NameNode和SecondaryNameNode,如下图所示。如果出现这4个进程表示主节点进程启动成功。

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

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

可见Datanode Information中的节点有两个
- 在HadoopMaster上启动Firefox浏览器,在浏览器地址栏中输入http://master:8088/,检查Yarn是否正常。页面如下图所示。

出错和解决办法
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)报错如下:
Starting nodemanagerslocalhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out.4' 的文件状态(stat): 没有那个文件或目录localhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out.2' 的文件状态(stat): 没有那个文件或目录localhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out.1' 的文件状态(stat): 没有那个文件或目录localhost: mv: 无法获取'/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-hadoop103.out' 的文件状态(stat): 没有那个文件或目录
解决办法:
- 先进入hadoop-3.2.2路径
cd /hadoop-3.2.2/
- 再进入该etc下的hadoop
cd etc/hadoop
- 最后打开workers文件删除第一行的localhost并保存退出
vim workers
之后再启动集群就不会报错
