写在前面:这是我的作业,请勿转载。
2.1.1虚拟机克隆
右键虚拟机->管理->克隆。
图1-1
图1-2
2.1.2虚拟机网络配置
由于虚拟机是克隆的,因此需要对其进行修改配置。
(1)首先配置静态ip,使其与主机的IP不同。修改完ifcfg-ens32配置文件后,重启系统。互ping网关、ip,发现能够ping通,说明配置修改成功。
图1-3
(2)禁用防火墙,由于我的防火墙已经在禁用状态,故不做配置。
图1-4
(3)在ping百度时,报错:
只需要在配置文件中加入新的dns地址(ip与网关相同),再重启网络服务即可:
图1-5
成功ping通网关、百度:
图1-6
小结:
由于虚拟机是克隆的,因此所有的主机名都一样,需要分别修改3个主机的hostname文件,配置3个虚拟机的/etc/hosts文件,使3个虚拟机之间能够网络互通。
2021/06/22
2.1.3集群安装准备
修改主机名为slave01,并且更改映射关系,同时修改Hadoop配置文件中的主机名:
图1-7
接下来启动 hadoop,发现无法连接,查看输出日志时发现更改hostname后无法识别现有主机名,修改主机名后同样需要修改配置文件中的主机名字,因此需要在core-site.xml和slaves文件中修改相应的主机名。
图1-8
用jps查看节点是否启动成功:
图1-9
可以看到,hadoop的主节点namenode并没有启动成功,通过查看输出日志,判断应该是密码输入错误的问题。由于在配置ssh免密登录时不慎修改了其他root文件,导致免密登录并没有完成。并且无法确定修改的是哪个文件,故无法对其进行还原,启动hadoop集群后仍需输入密码。重新启动试试:
图1-10
仍然启动失败,查看sencondaryNamenode的日志,发现FSImage有问题,删除目录,重新运行。
图1-11
依然无法查看到主从节点进程,切换到root用户启动Hadoop集群,发现此时Namenode和SecondaryNameNode出现了,初步判断是权限的问题:
图1-12
修改权限后仍然如此,因此切换到Hadoop用户,启动进程后查看namenode日志,发现找不到相关启动文件,搜索相关资料后发现Hadoop会定期删除/tmp下的内容,因此需要在hdfs-site.xml和core-site.xml内重新定向文件路径(我选择的是清空dfs中data和name下的文件),再启动发现成功了,但数据节点还未启动:
图1-13
图1-14
查看datanode的输出日志,发现报错:
图1-15
报错提示找不到这个方法,猜测是依赖冲突,slf4j-api和slf4j-log版本太低或者太高,导致Hadoop无法使用jar包。在百度上搜索了一下包的组合,把1.0.0更换成了1.5.11:
图1-16
重启一下,发现成功了!
图1-17
2.1.4 JDK的安装
JDK选择安装在hadoop的同级目录app下,由于我已装好JDK,故不再赘述。
图1-18
小结:
在选择与书上不同的软件版本时,需要格外留心版本冲突及配件包是否下载正确。我的错误主要是因为slf4j两个包的版本问题,最开始以为Hadoop不会出现版本冲突,以为是配置文件出错,最后才发现这两个jar包版本不对。
2021/06/23
2.1.5配置Hadoop
配置hdfs-site.xml
图1-19
配置core-site.xml
图1-20
配置mapred-site.xml
图1-21
配置yarn-site.xml
图1-22
配置masters,内容即主节点名字
图1-23
配置slaves,内容即从节点名字
图1-24
scp -r /home/hadoop/app/hadoop/etc/hadoop slave01://home/hadoop/app/hadoop/etc向从节点发送Hadoop配置文件,然后格式化。
图1-25
成功!
图1-26
接下来访问192.168.137.101:50070,发现无法连接;
图1-27
在hdfs-site.xml中添加这一段:
图1-28
关闭Hadoop集群,重新格式化,再启动Hadoop集群,主节点和从节点都成功了!
图1-29
小结:
将配置文件发送后,需要对两个从节点虚拟机配置进行二次更改。这里由于我没有修改配置文件,因此在第一次访问ip:50070查看主节点dfs情况时,网页显示无法访问。配置文件中,需要添加dfs.http.address属性,0.0.0.0即代表主机号。