大数据入门:HDFS数据读写机制

2020-12-01 17:59:48 浏览数 (1)

作为Hadoop的分布式文件系统的HDFS,是Hadoop框架学习当中的重点内容,HDFS的设计初衷,是致力于存储超大文件,能够通过构建在普通PC设备上的集群环境,以较低成本完成大规模数据存储任务。今天的大数据入门分享,我们就主要来讲讲HDFS数据读写机制。

HDFS在数据存储上,具备高可靠性,提供容错机制,为整个Hadoop框架的数据处理提供了更稳固的底层支持。这其中,HDFS数据读写机制是发挥着重要的作用的。

HDFS相关的基本概念

块(block)

这是HDFS的基本思想,把大的文件分成块,每块64M。

备份(replicas)

热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。

冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。

机架 (rack)

由几个DataNode组成的部件称为机架。

MetaData

描述我们要存储数据的数据结构。

HDFS namespace

这个命名空间指的是文件的目录结构,与我们单个电脑的文件的结构树相似。

EditLog

记录文件系统的metadata变化的事务日志,是HDFS的核心数据结构。 例如,写入一个文件或修改复制因子都会向EditLog中写入一条record。

FsImage

整个文件系统的命名空间,包括block到文件的映射,文件系统的属性(大小,被分为几个block,只读,权限等信息),都被存储在一个文件中,这个文件就是FsImage。

HDFS namespace,EditLog,FsImage都存储在NameNode上。

HeartBeat

NameNode和DataNode通过HeartBeat进行通信,每隔一定时间,DataNode就会向NameNode发送心跳信号,以此报告给NameNode,说我还活着,这样NameNode 在接到读写任务时,会发命令给它。

HDFS如何分解文件

HDFS默认会将文件分割成 block,64M为1个block,然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。每个文件默认会保存3份。

HDFS的基本架构,按照Master和Slave的结构,主要的组件包括:NameNode、SecondaryNameNode、DataNode。

NameNode:是Master节点,处理客户端的读、写请求;管理数据块映射;管理HDFS的名称空间;配置副本策略;

SecondaryNameNode:合并fsimage和fsedits,然后再发给namenode,尽量不要与NameNode部署在同一个host上,这样避免内存的过多消耗;NameNode的冷备份;

DataNode:Slave节点,干活的。负责存储client发来的数据块block,执行数据块的读写操作。

HDFS读写机制

1、数据写入

客户端访问NameNode请求上传文件;

NameNode检查目标文件和目录是否已经存在;

NameNode响应客户端是否可以上传;

客户端请求NameNode文件块Block01上传服务位置;

NameNode响应返回3个DataNode节点;

客户端通过输入流建立DataNode01传输通道;

DataNode01调用DataNode02,DataNode02调用DataNode03,通信管道建立完成;

DataNode01、DataNode02、DataNode03逐级应答客户端。

客户端向DataNode01上传第一个文件块Block;

DataNode01接收后传给DataNode02,DataNode02传给DataNode03;

Block01传输完成之后,客户端再次请求NameNode上传第二个文件块。

2、数据读取

客户端通过向NameNode请求下载文件;

NameNode查询获取文件元数据并返回;

客户端通过元数据信息获取文件DataNode地址;

就近原则选择一台DataNode服务器,请求读取数据;

DataNode传输数据返回给客户端;

客户端以本地处理目标文件。

关于大数据入门,HDFS数据读写机制,以上就为大家做了简单的介绍了。在Hadoop框架当中,HDFS作为分布式文件系统,地位十分关键,而想要把HDFS学好学懂,还是需要多下功夫的。

0 人点赞