分布式文件系统HDFS

来源:互联网 发布:华东理工大学知乎事件 编辑:程序博客网 时间:2024/05/29 05:56

HDFS简介

HDFS是一种通过网络实现文件在多台主机上进行分布式存储的文件系统,一般采用“C/S”的模式

HDFS中的相关概念

为了更好地理解和掌握HDFS中的原理和相关技术,我们须得对其里面的一些概念进行了解


  • 在普通的文件系统中,比如本地文件系统,在我们的磁盘中保存数据,系统并不是以字节进行存储的,而是以数据块进行存储,在普通的文件系统中,数据块的大小一般只有几千字节,而HDFS的数据库块大小默认就达到了64M,显然比几千字节大的多。而这样设计的目的就是最小化地减少寻址开销。
  • 名称节点
    在HDFS中,名称节点负责管理分布式文件系统地命名空间,而命名空间地作用就是为了让你去寻找文件地时候能够有个大概的方向。在名称节点里面,主要包括了FsImage和EditLog,FsImage负责维护文件系统的目录树结构和里面文件以及元数据,EditLog就是负责记录操作日志,在用户对文件进行删除、重命名等操作时,并不会立即生效,而是先保存在这个记录日志里面然后再执行的。
  • 数据节点
    这里面就是HDFS的主要工作节点了,因为它负责文件真实的数据的存取
  • 第二名称节点
    它的出现就是为了更新时加强名称节点里面的EditLog与FsImage整合的效率,以便名称节点能长期处于工作状态,而不是去执行EditLog里面的更新操作。

HDFS的体系结构

HDFS采用了主从的结构模型,是利用名称节点作为中心服务器,在集群中,数据节点一般是一个节点负责一个节点进程。在文件读取过程中,首先会将文件名称发送给Master中心服务器,由名称节点根据文件名找到发文件对应的数据节点,并将数据节点的序列返回给客户端,客户端获取后就直接请求对应的数据节点从服务器获得多需要的文件数据。
注意:全程名称节点服务器不参与文件数据的通信,真实数据之间的通信全部由从服务器和客户端自己完成,这样既实现了并发访问,又减少了主服务器的请求压力。
为了加快找到文件具体的数据节点信息,名称节点里面的数据都是存放在Master服务器的内存中的。

HDFS的存储原理

  • 数据的冗余存储

在HDFS中,每隔数据块都会被冗余地存储,它默认地冗余因子是3,意思是每隔文件块会被同时保存在三个地方,其中两份副本会放在同一个机架的不同机器上面,另一份副本会保存在不同机架的机器上面,这样可以避免“单点失效”的问题。这样多副本存储又三个优点:
(1)加快数据响应数据,因为可以实现文件块的并发访问。
(2)容易检查数据错误
(3)保证数据的可靠性,实现高可用、高性能。
- 数据错误与恢复
HDFS有三种数据类型的错误与恢复,分别是名称节点、数据节点以及数据。
当名称节点出错的时候,可以采取第二名称节点的机器作为名称节点并根据之前同步的名称节点中的元数据进行恢复
当数据节点发生错误时,由于每隔数据节点都会定期地向名称节点发送心跳包来告诉自己机器的运行状态,当数据节点不可用(机器宕机或网络不可用等)的时候,名称节点就收不到相应你给的数据包,因此就会被名称节点判定为宕机,然后调整数据节点的副本以供使用,而让出故障的数据节点暂停工作。
当数据出错的时候,它是根据文件的数字签名(md5或sha函数)来校验文件数据是否出错,出错了就去找副本的文件并进行校验。

原创粉丝点击