是什么?node
HDFS 是基于 Java 的分布式文件系统,容许您在 Hadoop 集群中的多个节点上存储大量数据。编程
起源:网络
单机容量每每没法存储大量数据,须要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统。而一旦在系统中,引入网络,就不可避免地引入了全部网络编程的复杂性,例如挑战之一是若是保证在节点不可用的时候——数据不丢失。分布式
核心概念:oop
Block:spa
HDFS中的存储单元是每一个数据块block,HDFS默认的最基本的存储单位是64M的数据块。和普通的文件系统相同的是,HDFS中的文件也是被分红64M一块的数据块存储的。不一样的是,在HDFS中,若是一个文件大小 < 一个数据块的大小,它是不须要占用整个数据块的存储空间的。日志
NameNode:网络编程
a. 元数据节点。该节点用来管理文件系统中的命名空间,是 master。其将全部的文件和文件夹的元数据保存在一个文件系统树中,it
b. 这些信息在硬盘上保存为了:命名空间镜像(namespace image)以及修改日志(edit log)。ast
c. 此外,NameNode还保存了一个文件包括哪些数据块,分布在哪些数据节点上。然而,这些信息不存放在硬盘上,而是在系统启动的时候从数据节点(datanode)收集而成的。
DataNode:数据节点。是HDFS真正存储数据的地方。客户端(client)和元数据节点(NameNode)能够向数据节点请求写入或者读出数据块。此外,DataNode须要周期性的向元数据节点汇报其存储的数据块信息。
Secondary NameNode:
从元数据节点并非 NameNode 出现问题时候的备用节点,
a. 它的主要功能是周期性的将 NameNode 中的 namespace image 和 edit log 合并,以防 log 文件过大。
b. 此外,合并事后的 namespace image 文件也会在 Secondary NameNode 上保存一份,以防 NameNode 失败的时候,能够恢复。