一、 介绍
HDFS(Hadoop Distributed File System)是分布式文件存储系统,Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
HDFS适用于一次写入、多次查询的情况,不支持并发写情况,小文件不合适。因为小文件也占用一个块,小文件越多块越 多,名字节点压力越大。
二、基本结构
1.名字节点(NameNode)
NameNode的作用是管理文件目录结构,接受用户的操作请求,管理数据节点。
名字节点维护两套数据:
① 文件目录与数据块之间的关系。是静态的,存放在磁盘上的,通过fsimage和edits文件来维护。
② 数据块与节点之间的关系。不持久放到到磁盘,每当集群启动的时候,会自动建立这些信息,所以一般都放在内存中。
所以名字节点是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表,接收用户的操作请求。
文件包括:
① fsimage(文件系统镜像):元数据镜像文件。存储某一时段NameNode内存元数据信息。
② edits:操作日志文件。
2.数据节点(DataNode)
Datanode 将 HDFS 数据以文件的形式存储在本地的文件系统中,它并不知道有 关 HDFS 文件的信息。它把每个 HDFS 数据块存储在本地文件系统的一个单独的文件中。
存储文件的真正数据。文件被分为一个个数据块存储在指定路径下面(数据块大小和存储路径都可以配置)。
文件包括:数据块文件和校验块文件。
3.客户端(Client)
完成对文件的读写删除等操作。
三、框架图
下面的框架图为HDFS的HA模式:
ZK:zookeeper
NN:NameNode
DN:DataNode