前言:本文为 hadoop 完全分布式实际环境中的真实测试,高可用测试、集群崩溃的处理不打算单独介绍,而是通过一个更加有整体感、顺序性的逻辑,将这两个知识嵌入整篇文章当中,来进行这两方面知识的学习,介绍与总结。
文章目录
- 一、环境与运行情况说明
- 二、模拟崩溃操作
- 1、删除数据目录
- 2、当前状态说明
- 3、高可用测试
- 三、HDFS 故障恢复
- 1、终止进程服务
- 2、删除 data、logs 目录
- 3、格式化 hdfs 的 namenode
- 4、重启 hdfs
一、环境与运行情况说明
当前环境为 Hadoop 完全分布式环境,共三台客户机,主机名分别为 hadoop102,hadoop103,hadoop104
具体配置过程与细则见:【Hadoop】完全分布式运行模式搭建流程
- hadoop102 的运行情况:
- hadoop103 的运行情况:
- hadoop104 的运行情况:
可参照下表来更形象地表示三个客户机的运行情况:
hadoop102 | hadoop103 | hadoop104 | |
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
二、模拟崩溃操作
1、删除数据目录
在 hadoop102 中,进入如下操作:
在 hadoop103 中,进入如下操作:
因为删除了 data 目录,即 NameNode 的物理文件 /dfs/name 已被删除,而 NameNode 结点还仍然缓存在内存中,因此需要重启 hdfs,使之刷新生效(因为手动递归删除了 hadoop 目录下的 data 目录,导致 data 目录内部的 /dfs/name 也被删了,而这个 name 目录就与 NameNode 结点相关,而在当再重启 hdfs 时,经过测试,确实会生成 hadoop 目录下的 data 目录,但是 data 目录内部的 /dfs/name 并未生成)。
2、当前状态说明
目录状态说明: hadoop102、hadoop103 中都删除了 data 目录,hadoop104 中仍有 data 目录。
结点状态说明: hadoop102 中,重启 hdfs 后,hadoop102 中,少了 NameNode 结点。
当前 hadoop102 中的环境状态:
当前 hadoop103 中的环境状态:
当前 hadoop104 中的环境状态:
补充1:若 NameNode 这个用于存储元数据以及处理客户端发出的请求的结点出现故障,或是 NameNode 进程无法启动,那么相应的 hdfs 可视化 web 页面也是无法启动的,即 http://hadoop102:9870/explorer.html#/ 无法访问
补充2:因为重启 hdfs 后,才使得 NameNode 从内存中消失,因此如果在删除了 hadoop102 中的 data 后,在重启 hdfs 之前,NameNode 仍存在于内存,因此相应的 hdfs 可视化 web 页面也可以查看。
3、高可用测试
此时,hadoop102、hadoop103 中已无 data 目录,仅 hadoop104 中含有 data 目录,我们进行 hdfs 中文件的下载测试
可成功下载,因此这便是 hadoop 中,hdfs 的一种冗余备份的体现,同时也展现了它的高可用(靠)性
接下来,我们将 hadoop104 中的 data 目录也删除
再进行下载测试
因为现在所有结点都没有数据了,所以自然是下载不下来的
三、HDFS 故障恢复
1、终止进程服务
在 hadoop102 中:
在 hadoop103 中:(因为我之前测试了 mapreduce 的实例,因此也启动了 yarn 进程,这里也要停掉)
2、删除 data、logs 目录
删除每个客户机中 hadoop 的 data、logs 目录
在 hadoop102 中:
在 hadoop103 中:
在 hadoop104 中:
3、格式化 hdfs 的 namenode
在 hadoop102 中:
4、重启 hdfs
出现了 NameNode,而同时,hdfs 的 web 可视化页面也自然就可以访问了,不过数据也随着之前 data 目录的删除而删除,现在的 hdfs 是没有数据的,但是却可以正常运行,因此,本部分只是对于结点崩溃的恢复,数据的恢复处理,择日再学习。