HDFS
基本情况
HDFS 是 Hadoop 技术体系中存储层的分布式文件系统,我们可能平常在Windows和Linux中见的和应用最多的应该是单机文件系统(FAT32 NTFS BTRFS EXT2/3/4 etc.),HDFS分布式文件系统的具有的一些特点
- 大容量 - 更多的机器更多的存储介质
- 高可靠 - 多个副本的容错能力
- 低成本 - 不需要高级的硬件来进行扩容
分布式文件系统时分布式存储系统的一个存储分支,一般分布式存储系统的归类有
- 对象存储(阿里云OSS AmazonS3)
- 文件系统(HDFS CubeFS)
- 块存储(AmzonEBS CurveBS)
- 数据库(cassandra)
HDFS 的功能特性
- 分布式 - 受GFS启发,使用java开发的开源的系统,但没有完整实现完整的POSIX文件系统语义
- 容错 - 自动处理,规避多种错误的场景(网络错误 机器宕机)
- 高可用 - 主备模式实现元数据的高可用,数据多副本进行存储
- 高吞吐 - Client 直接从 DataNode进行数据的读取,支持并发的读写
- 高扩展 - 联邦选举式集群模式,DataNode 数量可达 10w 级别
- 廉价 - 只需要通用的硬件,不需要高昂的硬件设备
架构原理
核心组件
HDFS的三大件
DataNode 实际数据的存储地址,NameNode存储数据的元数据
Client 写入数据的流程
Client 读取数据的流程
NameNode(元数据节点)
- 维护目录树(维护目录树增删改查操作,保证数据的的持久化)
- 维护文件和数据块的关系(文件切分多个块,文件以数据块为单位进行多副本的存放)
- 维护文件块存放节点信息(通过心跳接收DataNode的汇报信息,维护集群节点的拓扑结构和文件所有副本的DataNode类表)
- 分配新文件存放节点(Client 创建文件的时候,进行DateNode 的分配)
DataNode(数据节点)
- 数据块的存储(实现数据块在硬盘上的快速存取)
- 心跳汇报(将本机的数据块列表发送到NameNode,汇报运行的状态)
- 副本复制(数据写入时 Pipeline IO ,机器发生故障副本的还原)