1、HDFS概述
1.1 概念
HDFS(Hadoop Distributed File System,分布式文件系统)是Hadoop大数据生态系统的底层核心,提供了大数据分布式存储的支持,HDFS是为处理超大数据集(Large Data Set)的应用需求而设开发的,对高吞吐量大规模文件操作带来了很多便利。
1.2 优点
高容错性;高效性;流式数据访问;适合大数据处理;简单的文件模型;跨平台兼容性。
1.3 缺点
低延时数据访问受限;不适合小文件存储;不适合并发写入;不支持修改文件。
2、HDFS体系结构
2.1 体系结构图
2.2 Block数据块
2.0之前版本数据块大小默认64M,2.0以后为128MB,一个文件多块,以块为单位。
可以最小化寻址开销;支持大规模文件存储;简化系统设计;适合数据备份。
2.3 Client客户端
- 客户端是用户操作常用方式,部署都有客户端;
- 客户端是个库,包括文件系统接口;
- 支持打开、读取、写入等常见操作,提供类似Shell的命令行方式访问数据;
- 提供了Java API,作为应用程序访问文件系统的客户端编程接口;
- 是Hadoop内置操作HDFS的库。
2.4 NameNode名称节点功能
在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即Fslmage和EditLog。
Fslmage文件包含文件系统中所有目录和文件inode的序列化形式。其用于维护文件系统树,以A及文件树中的文件和文件夹中的元数据。
EditLog记录针对文件的创建、删除、重命名等更新操作,NameNode启动时,Fslmage会被加载到内存中,之后再执行EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
2.5 DataNode数据节点功能
数据节点(DataNode)是分布式文件系统HDFS的工作节点,负责数据的存储和读取,系统会根据客户端请求或者是名称节点的调度来进行数据的存储和检索,并且向名称节点(NameNode)定期发送自己所存储的快的列表。
数据节点(DataNode)是文件系统中真正存储数据的地方。
客启端(Client)或者名称节点(NameNode)可以向数据节点(DataNode)请求写入或者读出数据块,数据节点(DataNode)会周期性的向名称节点(NameNode)回报其存储的数据块的信息。
2.6 SecondaryNameNode第二名称节点功能
SecondaryNameNode是HDFS架构中的一个组成部分,它是用来保存名称节点(NameNode)中对HDFS元数据信息的备份并减少名称节点重启的时间,主要功能就是周期性将名称节点 (NameNode) 的镜像文件和修改日志(EditLog)合并,以防日志文件过大。SecondaryNameNode一般是单独运行在一台机器上。
SecondaryNameNode不是NameNode节点出现问题时候的备用节点,它和NameNode节点负责不同的事情.
3、HDFS关键特性
3.1 数据块复制特性
HDFS靠大机器的大集群进行存储超大文件,存为一系列的Block进行分散保存,除了最后一块,所有的数据块大小相同。
一般,副本系数是3,分别存在本地机架,同一机架另一个节点,不同机架节点上,实现复制。
3.2 机架感知(Rack-Aware)
概念:集群中不同机架上机器之间通讯需要经过交换机,名称节点能将数据块副本复制存放在不同机架的数据节点上。
优点:防止整个机架失效数据丢失;读数据时均匀分布集群,实现负载均衡。
缺点:一个写操作需要传输数据快到多个机架,增加了写的代价。
3.3 集群均衡策略
Hadoop启动balancer任务后,集群自动读取各个节点磁盘使用情况,根据设置的主机空间使用率差值来进行计算从远超该平均值的节点数据开始往空间使用率低于该平均值的主机开始进行数据复制,一旦复制完成之后将删除原节点数据,以达到集群负载均衡的目的。
3.4 数据完整性
HDFS文件内容的校验和(Cheakaum检查点机制,实现了当客户端创建新的HDFS文件,会计算该文件每个数据块的校验和并将校验和作为一个单独的隐藏文件保存在同一个HDFS名字空间下。当客户端获取文件后,它会检验从数据节点(DataNode)获取的数据跟相应的校验和文件中的校验和是否匹配。如果不匹配,则客户端可以选择从其他DataNode获取该数据块的副本确保获取到的数据是完整的。
3.5 快照(Snapshot)
概念:HDFS在某一时间点对指定文件进行拷贝。
作用:HDFS快照是在建立文件系统的索引,新开辟一个空间用来保存更改的文件一旦有了快照,不管后面文件目录发生什么变化,都可以通过快照恢复到某-时刻的文件和文件目录结构。因为快照采用的是只读模式,可以对重要数据进yy045692行恢复、防止用户错误性的操作
4、HDFS读写流程
4.1 HDFS写数据流程
4.2 HDFS读数据流程
5、HDFS应用实例
HDFS常用命令