hadoop fsck健康检查

简介: 昨天下午的时候检查生产环境的hadoop集群时,发现异常情况如下图: 简要的说明上图的意思,说明有这些文件没有满足副本份数,我副本份数设置的为2份,刚刚起初以为是这个文件只有一个副本了,结果去每台datanode上面去find第一个上图报的block文件时,每台datanode上都有这个block文件,当时真的是奇了怪了,副本是2(我指的是hdfs-site.
昨天下午的时候检查生产环境的hadoop集群时,发现异常情况如下图: img_f4ba26c3f6d65a0ea551b511784c5f17.jpg
简要的说明上图的意思,说明有这些文件没有满足副本份数,我副本份数设置的为2份,刚刚起初以为是这个文件只有一个副本了,结果去每台datanode上面去find第一个上图报的block文件时,每台datanode上都有这个block文件,当时真的是奇了怪了,副本是2(我指的是hdfs-site.xml文件里面设置的),每个datanode上都有这个block文件,我的是三个datanode加起来应该是3份,这个数肯定大于默认的副本数,所以应该也不是报副本份数啊!纠结中!
经过一番的查询资料,看到这篇博客对我的启发很大,地址我引用一下,博主别见怪啊!
里面说到一句话让我尝试了一下
img_3ec834ca5bea8c4b80d229a29a064a96.jpg
结果我查看了一下我的第一个报的block文件,看看文件的副本数是多少?
hadoop/bin/hadoop fs -ls /tmp/hadoop-hadoop/mapred/staging/hadoop/.staging/job_201207161728_0015/job.jar
Warning: $HADOOP_HOME is deprecated.
Found 1 items
-rw-r--r--    10 hadoop supergroup    3110243 2012-08-17 09:23 /tmp/hadoop-hadoop/mapred/staging/hadoop/.staging/job_201207161728_0015/job.jar
上述的红色字段我已标记出,看来问题出在这里了,我按照如下方法把它设置副本数为3
[hadoop@master ~]$ hadoop/bin/hadoop fs -setrep -R 3 /tmp/hadoop-hadoop/mapred/staging/hadoop/.staging/job_201207161728_0015/job.jar
说明一下上述的命令的意思,3就是副本份数,后面就是hdfs目录的路径,这样就说明把这个目录下的所有文件的副本份数都设置为了3。
再用hadoop/bin/hadoop fsck /查看一下,上述截图的第一个块文件未满足副本份数提示就消失了,依次操作,将所有的文件的份数都设置为3后,最后我们在fsck一下,得到的是下图:
img_88b854abc4d776bf5a053882d626265e.jpg
这样就是一个说明集群检查一切正常了!通过上述解决手段,我也大致推理出了fsck的检查工作原理:
它会去检查hdfs文件系统上所有文件的副本份数,然后去和所有datanode节点上的副本块的总数进行比较。不知道推理的对不对,希望知道原理的朋友别吐槽!另外如果你用命令行设置了副本数,再重启hadoop集群的话,那么副本数还是以你设置的hdfs-site.xml文件里面值为准!
在这里我做个小实验,看看效果如何?
过程我就不截图了,说说结果吧!
1、首先我在本地新建一个文件,然后把文件上传到hdfs上。
2、在所有的datanode上找了只有两份副本,因为我hdfs-site.xml文件里面设置的为2。
3、查看hdfs上的文件,副本数的数也为2。
4、将datanode上有副本的文件复制到本节点其余的subdir*目录下,block块文件是4份。
5、我再用fsck查看,仍然没有报有超出的副本文件。
这里我说一下大致原因,当上传一个文件到hdfs文件系统时,它应该有一些相关的信息对应了datanode上的block块文件,因此不会去寻找别的subdir*目录,所以fsck时不会报超出副本的文件。
最后说一下这个hadoop/bin/hadoop fsck /输出的一些信息的大致意思,仅供参考:
Over-replicated blocks:        0 (0.0 %)   副本数高出设定默认复制级别参数的数据块文件所占比率
Under-replicated blocks:       0 (0.0 %)   副本数低于设定默认复制级别参数的数据块文件所占比率
Mis-replicated blocks:         0 (0.0 %)   丢失的副本块文件所占比率
Default replication factor:    2           副本份数
Average block replication:     2.658721    实际平均副本数
Corrupt blocks:                0           损坏的block数
Missing replicas:              0 (0.0 %)   丢失的副本数
Number of data-nodes:          3           数据节点数
Number of racks:               1           机架数,如果没配置机架,默认都是1
FSCK ended at Fri Dec 07 10:18:18 CST 2012 in 113 milliseconds

The filesystem under path '/' is HEALTHY    检测文件系统正常


目录
相关文章
|
机器学习/深度学习 算法 数据挖掘
机器学习集成学习进阶Xgboost算法原理
机器学习集成学习进阶Xgboost算法原理
407 0
|
移动开发 JSON JavaScript
全网最详细教写可视化面板(js、css3、html5)
全网最详细教写可视化面板(js、css3、html5)
108 0
鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
采用的方法是在修改数据时,通过`this.dArray.splice(index, 1, this.dArray[index])`替换指定元素,强制数组更新并反映到界面上。
449 0
|
存储 安全
《计算机网络》期末复习——第三章:数据链路层
《计算机网络》期末复习——第三章:数据链路层
325 0
|
人工智能 搜索推荐 网络安全
初创企业和数字化转型:塑造2023年的主要趋势
初创企业和数字化转型:塑造2023年的主要趋势
|
监控 Dubbo Java
【Sentinel】初识Sentinel
【Sentinel】初识Sentinel
545 0
【Sentinel】初识Sentinel
|
C语言 Linux
SystemTap工具的使用基础
systemtap工具的安装 准备工作 uname -a 查看当前内核版本是哪一个,然后使用 yum install kernel-devel 安装kernel debuginfo包 rpm -qi kernel-devel 找到内核构建的详细信息,然后去对应发布网站上找kernel-debuginfo和kernel-debuginfo-common包。
2146 0
|
Java
Java 字符串(String)构造方法
Java 字符串(String)构造方法
128 0
|
SQL Java 数据库连接
Mybatis/Mybatis-Plus基础(四)
Mybatis/Mybatis-Plus基础
257 0