HDFS
1. HDFS(Hadoop Distributed File System)
HDFS是Hadoop项目的和核心子项目,是分布式计算中数据存储管理的基础,基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。具有高容错、高可靠、高扩展性、高获得率、高吞吐率等特征。
2.HDFS体系架构
2.1 HDFS是什么?
HDFS是一个主从(Master/Slave)体系结构:master和slave都工作。还有一种主备体系结构,主工作,备用不工作。从用户角度来看,他就像传统的文件系统一样,可以通过目录路径对文件执行CRUD(Create、Read、Update、Delete)操作。
由于分布式存储的性质, Hdfs的组成如下:
面向文件包含:文件数据(data)以及元数据(metadata属性)。
2.2 各组成介绍
- NmaeNode:管理文件系统的元数据(描述数据的数据),例如:文件名称、文件目录结构、文件属性(生成时间、副本数、文件权限、文件大小等)以及文件的块列表和块所在的DataNode等。并维护了一个层次型的文件目录树。
- DataNode:存储实际的数据(block块),并提供block的读写。DataNode响应来自HDFS客户机的读写请求同时它们还响应来自NameNode的创建,删除和复制块的命令。
NameNode依赖来自每个DataNode的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode可以根据这个报告验证块映射和其他文件系统元数据。如果DataNode不能发送心跳消息,NameNode将采用修复措施。重新复制在该节点上丢失的块。 - 文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个称一个Block。HDFS默认BIock大小是128MB。不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据存储空间。
2.3 各部分的运行
客户端Client通过NameNode和DataNode的交互访问文件系统。客户端Client联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的,以获取block数据.