Hadoop生态之hdfs知识点总结

一、简介

HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。

优点:1.适合大文件存储,支持TB、PB级的数据存储,并有副本策略;

           2.可以构建在廉价的机器上,并有一定的容错和恢复机制;

           3.支持流式数据访问,一次写入,多次读取最高效。

缺点:1.不适合大量小文件存储;

           2.不适合并发写入,不支持文件随机修改;

           3.不支持随机读写等低延时的访问方式。

二、NameNode

1、作用

响应客户端请求,管理文件系统的命名空间,存放文件元数据;

维护文件系统的所有文件和目录,文件和数据块的映射;

记录每个文件中各个块所在数据节点的信息。

2、NameNode元数据信息 
文件名,文件目录结构,文件属性(生成时间,副本数,权限)每个文件的块列表。 
以及列表中的块与块所在的DataNode之间的地址映射关系 
在内存中加载文件系统中每个文件和每个数据块的引用关系(文件、block、datanode之间的映射信息) 
数据会定期保存到本地磁盘,但不保存block的位置信息而是由DataNode注册时上报和在运行时维护

3、NameNode副本 
文件数据块到底存放到哪些DataNode上,是由NameNode决定的,NN根据全局情况做出放置副本的决定 
读取文件的时候,NN尽量让client读取离它最近的datanode上的副本,降低带宽消耗和读取时延

4、心跳机制 
Namenode全权管理数据块的复制,周期性的接受心跳和块的状态报告信息(包含该DataNode上所有数据块的列表) 
若接受到心跳信息,NN认为DN工作正常,如果在10分钟后还接受到不到DN的心跳,那么NN认为DN已经宕机 
这时候NN准备要把DN上的数据块进行重新的复制。 
块的状态报告包含了一个DN上所有数据块的列表,blocks report 每个1小时发送一次
 

三、DataNode

1、作用

存储并检索数据块;

向NameNode更新所存储块的列表。

2、DataNode工作机制 
datanode启动时,每个datanode对本地磁盘进行扫描,将本datanode上保存的block信息汇报给namenode 
namenode在接收到的block信息以及该block所在的datanode信息等保存在内存中。 
DataNode启动后向NameNode注册,通过后周期性(1小时)的向NameNode上报所有的块信息
 

四、HDFS写流程

 

1)客户端向namenode发送上传文件请求,namenode对要上传目录和文件进行检查,判断是否可以上传,并向客户端返回检查结果。

2)客户端得到上传文件的允许后读取客户端配置,如果没有指定配置则会读取默认配置(例如副本数和块大小默认为3和128M,副本是由客户端决定的)。向namenode请求上传一个数据块。

3)namenode会根据客户端的配置来查询datanode信息,如果使用默认配置,那么最终结果会返回同一个机架的两个datanode和另一个机架的datanode。这称为“机架感知”策略。

4)客户端在开始传输数据块之前会把数据缓存在本地,当缓存大小超过了一个数据块的大小,客户端就会从namenode获取要上传的datanode列表。之后会在客户端和第一个datanode建立连接开始流式的传输数据,这个datanode会一小部分一小部分(4K)的接收数据然后写入本地仓库,同时会把这些数据传输到第二个datanode,第二个datanode也同样一小部分一小部分的接收数据并写入本地仓库,同时传输给第三个datanode,依次类推。这样逐级调用和返回之后,待这个数据块传输完成客户端后告诉namenode数据块传输完成,这时候namenode才会更新元数据信息记录操作日志。

5)第一个数据块传输完成后会使用同样的方式传输下面的数据块直到整个文件上传完成。

五、HDFS读流程

1)客户端向namenode发起RPC调用,请求读取文件数据。

2)namenode检查文件是否存在,如果存在则获取文件的元信息(blockid以及对应的datanode列表)。

3)客户端收到元信息后选取一个网络距离最近的datanode,依次请求读取每个数据块。客户端首先要校检文件是否损坏,如果损坏,客户端会选取另外的datanode请求。

4)datanode与客户端简历socket连接,传输对应的数据块,客户端收到数据缓存到本地,之后写入文件。

5)依次传输剩下的数据块,直到整个文件合并完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值