赞
踩
在我们学习HDFS之前,首先要了解分布式文件系统的概念,分布式文件系统有很多,HDFS只是其中的一种而已。那么分布式文件系统是什么呢,又有哪些优点?
随着现在数据量越来越多,在一个操作系统管辖的范围存不下了,那么就需要分配到更多的操作系统管理的磁盘中,但是这样又不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就产生了分布式文件管理系统。
分布式文件系统是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。分布式文件系统主要有下面两个特点:
1)通透性。让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地磁盘一般。
2)容错性。即使系统中有某些结点脱机,整体来说系统仍然可以持续运作而不会有数据丢失。(这一点后面会详细解释)
分布式文件系统有很多,hafs只是其中一种。适用于一次写入多次查询的情况,不支持并发写操作,小文件不适合。(下面也会解释)
HDFS设计架构
我们先看一下系统体系图
想要看懂这张图,我们先得了解这几个基本概念:
块(block):我们可以看到图中有 “读取数据块” 的字样,那么数据块是什么呢?块在文件系统里面通常是指固定大小的逻辑单元,HDFS的文件就是被分成块进行存储,每个HDFS块的默认大小是64MB。我们做文件的备份和查找也都是以块为单元进行的,那么这么做的好处是什么?
NameNode:管理节点,存放元数据,元数据又包括两个部分:1.文件与数据块的映射表,2.数据块与数据节点的映射表。这里也就可以解释为什么HDFS不适合存储小文件了,因为不管是存大文件或是小文件都是需要在NameNode里写入元数据,显然存小文件是不划算的。
DataNode:HDFS的工作节点,存放数据块。
HDFS为了保证对硬件上的容错,对任何一个数据块都是默认存三份,因为任何一个节点都可能发生故障,为了保证数据不被丢失,数据块就有多分冗余。
在上图中,A,B,C,D都是64MB的数据块,而且默认都有三份,其中两份在同一机架上,在另一个机架上也有一份。这样即使一个节点挂了,还可以在同一机架的另一个节点上找到相同数据块。即使整个机架挂了,也可以在另一个机架上找到。
我们可以举个例子来理解整个过程:NameNode 相当于一个仓库管理员,他需要维护自己的一个账本,而 DataNode 相当于一个仓库,在仓库里面存放数据,客户端相当于送货人或者提货人。当我们要存数据(货物)的时候,送货人想将货物放到仓库里,首先要跟仓库管理员打交道,即发送一个请求,仓库管理员先查看账本(包含各个仓库的信息),看看哪些仓库可以用之类的,然后告诉送货员你把货物送到某个仓库里面去。
心跳检测
每个DataNode定期向NameNode发送心跳消息,来汇报自己的状况:是否还处于Active状态,网络是否断开之类的。
Secondary NameNode
二级 NameNode ,定期同步元数据映像文件和修改日志,当 NameNode 发生故障时,Secondary NameNode可用来恢复文件系统。为了防止 NameNode 发生故障时,元数据丢失。大部分情况下,当NameNode 正常工作时,Secondary NameNode 只做备份工作,而不接受请求。
切记:Secondary NameNode 不是 NameNode 的热备进程,也就是说它是无法直接替代 NameNode 进行工作的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。