大数据时代海量数据的存储对文件系统的存储容量、数据吞吐率提出了很高的要求。Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop的核心组件,可以将数据分布式地存储在由通用X86服务器组成的计算机集群中。HDFS具有很好的容错能力,并且兼容廉价的硬件设备,因此可以以较低的成本利用现有的机器实现大数据量的读写。
文章目录
一、分布式文件系统
传统文件系统构建于单台物理计算机上,随着数据的增加,对于超过单台物理计算机存储能力的大型数据集,需要将其划分为若干部分分别存储在网络中的不同计算机中。
1.分布式文件系统的概念与作用
与传统的本地文件系统相比,分布式文件系统(Distributed File System)是一种通过网络实现文件在多台主机上进行分布式存储的文件系统。分布式文件系统的设计一般采用“ 客户机/服务器”(Client/Server)模式,客户端以特定的通信协议通过网络与服务器建立连接,提出文件访问请求,客户端和服务器可以通过设置访问权来限制请求方对底层数据存储块的访问。
2.分布式文件系统的结构
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类:一类叫主节点也称为名称节点,另一类叫从节点也称为数据节点。名称节点负责文件和目录的创建删除和重命名等,同时管理着数据节点和文件块的映射关系,因此客户端只有访问名称节点才能找到请求的文件块所在的位置,进而到相应位置读取文件块。数据节点负责数据的存储和读取,在存储时,由名称节点分配存储位置,然后由客户端把数据直接写入相应数据节点;在读取时客户端从名称节点获得数据节点和文件块的映射关系,然后就可以到相应位置访问文件块。
3.分布式文件系统的设计需求
分布式文件系统的设计目标主要包括透明性、并发控制、可伸缩性、容错以及安全需要等。
二、HDFS的相关概念
1.HDFS简介
HDFS支持流数据读取和处理超大规模文件,并能够运行在廉价的普通机器组成的集群上。HDFS在设计之初就充分考虑了实际应用环境的特点,硬件出错在普通服务器集群中是一种常态而不是异常。HDFS要实现以下目标:
- 兼容廉价的硬件设备
- 流数据读写
- 大数据集
- 简单的文件类型
- 强大的跨平台兼容性
HDFS在实现上述优良特性的同时,也使得自身具有一些应用局限性,主要包括以下几个方面:
- 不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持用户写入及任意修改文件
2.块
在传统的文件系统中,为提高磁盘读写效率,一般以数据块为单位,而不是以字节为单位。HDFS中同样采用了块的概念,默认块的大小为128 MB (HDFS2.0及以上版本),数据块存储的是真实的数据。我们所熟悉的普通文件系统的块一般只有几千字节,可以看出,HDFS在块的设计上明显大于普通文件系统。HDFS这么做