Hadoop学习笔记---HDFS简介

来源:互联网 发布:六味地黄丸 知乎 编辑:程序博客网 时间:2024/05/21 13:21

HDFS(Hadoop Distributed File System)是整个hadoop生态系统的基础,其基本原理是把大的文件分成固定大小的块(默认64M,可配置),每个块分配一个全局唯一的标识,把这些块分布在集群中,每一块都是存储在节点的本地文件系统上由dfs.data.dir指定的目录下,可以看成是单独的文件。在总控节点(namenode)存储文件系统的命名空间,namenode在内存中维护命名空间,如每个文件被分成哪些块,分别存储在哪等。比如:有两个文件,data1被分成三块,块号是1,2,3。data2被分成两块,块号为,4,5。在HDFS中的存储情况示例如下图所示。


namenode还在磁盘中存储文件系统镜像和日志文件,以便在系统重新启动时恢复文件命名空间。需要注意的是,镜像里面不存储每个块的位置,块的位置是在系统启动时由datanode报告给namenode的,并且会定期向namenode报告来提供可靠性。拿上面的示例来说,镜像里面只记录data1由1号,2号和2号数据块组成,并不记录每一块的具体位置,位置只保存在内存里。

HDFS被设计成运行在普通硬件之上,当集群比较大时,出现各种故障的可能性是很大的,为了提供高可靠性,HDFS采取了很多措施,首先是冗余备份,每个数据块在系统中都存有多个备份(默认为3,可配置),一旦数据块出现损坏,系统可以自动增加备份并删除坏数据块。因为namenode存储整个文件系统的命名空间,一旦损坏,数据将全部丢失。

SNN(SecondaryNamenode)的作用是合并文件系统镜像和操作日志,用来更新检查点,可以防止日志文件过大,新的文件系统镜像将同步更新到namenode。因为SNN保存有文件系统镜像,所以当namenode损坏时可以把SNN配置成namenode,但是因为SNN滞后于namenode,所以最近一段时间修改将丢失。能完全恢复文件系统的方法是配置dfs.name.dir为多个存储地址,尤其是当其中一个为网络文件系统。HDFS会把系统镜像和操作日志写到dfs.name.dir指定的多个目录下面,所以当namenode损坏时,可以从别的地方找到镜像文件和日志文件,从而恢复文件系统。系统启动时就是利用镜像和日志来重建文件系统命名空间。

0 0
原创粉丝点击