HDFS工作机制

HDFS工作机制

两大角色:

DataNode:负责管理用户的文件数据块
NameNode:负责管理整个文件系统的元数据

NameNode的工作机制

职责:
1)客户端请求的响应
2)元数据的管理(查询,修改)

元数据的存储:
内存中有一份完整的元数据;磁盘中还有一份元数据镜像。

NameNode主要维护两个文件:
1)fsimage(filesystem image)文件镜像
存于硬盘的最新的元数据检查点
2)editlog
自最新的检查点后,对文件的修改操作都先记录到editlog中,操作成功后再更新内存中的元数据。

checkpoint(检查点)
为了避免editlog无限扩大,Secondary NameNode会周期性的读取NameNode中的fsimage和editlog,并合并为新的fsimage,之后新的操作记录写入新的editlog中。
过程:
(1)NameNode将hdfs更新记录写入edits.new文件
(2)Secondary NameNode通过http get的方式获取NameNode的fsimage和edits文件
(3)Secondary NameNode合并fsimage和edits文件,生成新的fsimage.ckpt(过程比较耗时,所以放在secondary namenode中)
(4)Secondary NameNode通过http post的方式将fsimage.ckpt发送给NameNode
(5)NameNode将fsimage.ckpt,edits.new重命名为fsimage,edits

NameNode故障后
将Secondary NameNode的fsimag拷贝到NameNode的工作目录下,重建元数据信息。
(editlog存放在Namenode中,当Namenode挂掉,editlog也会丢失,导致利用secondary namenode恢复Namenode时,会有部分数据丢失。)

DataNode的工作机制

职责:
管理用户的文件数据块
定期向NameNode汇报自己持有的文件块信息(心跳机制,namenode能很快感知到是够有datenode故障)

HDFS读写数据流程

读数据:
1)跟NameNode通信,找到文件块所在DataNode服务器
2)选择一台DataNode服务器,请求建立socket流。
3)DataNode从磁盘读取数据放入流,以packet问单位做校验
4)客户端以packet为单位接收,先在本地缓存,然后写入目标文件。

写数据:
1)跟NameNode通信,请求上传文件。
2)NameNode查找目标文件是否已经存在,父目录是否存在。返回是否可以上传。
3)客户端请求第一个block应该传输到哪些DataNode服务器。
4)NameNode返回3台DataNode服务器ABC
5)客户端请求其中一台A上传数据(RPC调用,建立pipeline),A收到请求后会调用B,B调用C。
6)客户端开始往A上传一个block,以packet为单位,A收到一个packet就会传给B,B传给C。
7)一个block传输完成,客户端再次请求第二个block上传的服务器。

你可能感兴趣的:(HDFS工作机制)