Hadoop学习——HDFS

1、SNN(SecondaryNameNode)的数据合并过程

触发合并:设定时间间隔、设定edits文件大小、Hadoop重启

合并时,SNN会将NameNode中edits文件和fsimage文件拷贝过来,这时NN生成新的edits文件会继续记录新的读写请求。在SNN中将拷贝过来的fsimage和edits文件合并生成新的fsimage,并将其发送到NN中替换之前fsimage文件。

2、NameNode的实现

NN中维护着HDFS的元数据信息,并且将其存储内存中,利用三个文件实现的,edits(保存对数据的操作记录),fsimage(保存大部分的元数据),fstime(保存最近一次检查的时间)。当有写请求时,NN会先将请求写入edits文件,成功后修改内存,然后客户端返回处理结果。

3、DataNode的实现

在Hadoop中,数据是以块的形式存储在DN上。DN会不断向NN发送心跳报告,用于告知NN存活状态,并且接受NN发送过来的处理信息,然后对数据进行相应的处理。

DN在一定时间内没有被NN接受到其发送的心跳报告,NN会认为该DN宕掉,然后会将该DN维护的数据copy到其它存活的DN上。

4、HDFS的读过程

客户端Client,向NN发起读取文件的请求;

NN会检查Client权限,文件是否存在等信息,若正确,Client可以获取到文件块的存储位置;

Client会选择距离近的块中进行读取文件;

读取结束后,会通知NN读取结束。

5、HDFS的写过程

客户端Client,向NN发送写文件的请求;

NN检查要创建的文件是否存在,Client是否有权限,若正确,则记录到edtis中;

Client自行将数据进行切分多个packet,并写入队列中,向NN请求新的block,获取存储的DN列表;

Client只将数据队列发送到一个DN上,DN之间会通过pipeline(管道)写入块;

存储成功返回成功信息给Client;

Client通知NN写入结束。

6、HDFS的删除过程

客户端Client将要删除的数据发送到NN上;

NN会将自身存储的数据相关信息删除,但并不会立即通知DN删除数据;

在DN发送心跳报告时,才会通知删除数据。

7、HDFS的角色划分

block:数据块,HDFS中最基本的存储单位,默认128M

NameNode:保存HDFS的元数据信息,包含文件和block的关系,block的数量、block和DN的关系

DataNode:真正存储block的地方

SecondaryNameNode(Hadoop1.0/Hadoop2.0伪分布式下):帮助NN进行元数据的合并,有一定的数据恢复能力

8、DataNode的容错机制

在DN中,始终维护着指定数量的副本,默认三个,用于保证某个DN宕机后数据的完整性,并且这些副本存放策略是:与DN同一机器上、不同机架上、同一机架的不同机器上,更多的节点随机存储到空闲DN上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章