1.4 HDFS简介
1. HDFS是什么
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。目前HDFS是Apache Hadoop Core项目的一部分。
2. HDFS的由来
我们知道HDFS源于Google发布的GFS论文。HDFS是Hadoop Distribute File System的简称,是Hadoop的一个分布式文件系统。
3. HDFS设计目标
• 大文件存储:支持TB、PB级的数据量。
• 高容错:运行在商业硬件上,而商业硬件并不可靠。
• 高吞吐量:为大量数据访问的应用提供高吞吐量支持。
4. HDFS适用场景与不适用场景
HDFS适用场景与不适用场景如表1-1所示。
表1-1 HDFS适用场景与不适用场景
5. HDFS的基本概念
(1)数据块(block)
大文件会被分割成多个block进行存储,block大小默认为128MB。小于一个块大小的文件不会占据整个块的空间。
每一个block会在多个DataNode上存储多份副本,默认是3份。
比如:1MB的文件有1个block块,128MB的文件有1个block块,129MB的文件有2个block块。
(2)NameNode
记录文件系统的元数据,单一主元数据服务器,其中包括每个文件、文件位置以及这些文件所在的DataNode内的所有数据块的内存映射。维护文件系统树及整棵树内所有的文件和目录。
(3)DataNode
负责存储和检索数据块,它受客户端和NameNode调度,并且它会定期向NameNode发送本节点上所存储的块列表,这就是为什么NameNode并不是永久保存各个节点块信息的原因了。