HDFS组成架构、工作原理以及读写数据流程

组成架构

1.NameNode:
管理文件系统的命名空间,维护着文件系统树以及整棵树内所有的文件和目录。
对于文件来说保存了副本级别、访问时间、访问权限、块大小、字节数、组成一个文件的块等。
对于文件目录来说保存了访问权限等。
同时记录着每个文件中各个块所在的数据节点信息,但这个信息不永久保存,每次启动时由数据节点上报。
2.DataNode:管理数据块与操作系统的映射关系、执行数据块的读写操作
3.Client:文件切分、与NameNode交互,获取文件的位置信息、与DataNode交互,读取或写入数据
4.SecondaryNameNode:辅助NameNode、分担其工作量、NameNode挂掉后恢复NameNode的部分数据。

NameNode工作原理

NameNode启动后把硬盘中的镜像文件和编辑日志加载到内存中并执行编辑日志中的操作记录,一旦内存中成功建立了文件系统元数据的映射,就在硬盘中备
份一个新的镜像文件,在内存中创建一个空的编辑日志,客户端操作请求到达后,先把对应操作记录到编辑日志中,再在内存元数据中执行操作。

DataNode工作原理

DataNode启动后向NameNode注册块信息(每个数据块的长度、校验和、时间戳),注册成功后,每隔一小时继续注册,并且每隔三秒与NameNode通信
一次(心跳机制),返回结果带有NameNode的指令,当NameNode超过十分钟没有收到DataNode的心跳认为该节点不可用。
DataNode本质是一个Java进程,是不能够存储数据的,只是这个进程掌握着数据与Linux操作系统的映射关系。

SeconderyNameNode工作原理

触发CheckPoint后(触发条件为:时间每间隔1小时或镜像文件已满就触发一次)SecondaryNameNode从NameNode的中拷贝硬盘中的镜像文件
和内存中的编辑日志,并加载到内存中进行合并,合并形成新的镜像文件后在推送给NameNode。

读数据流程

客户端通过fs对象向NameNode请求下载文件,NameNode判断文件是否存在,若存在返回这个文件中各个数据块所在的DataNode信息。
客户端创建输入流对象与DataNode建立传输通道,把文件从DataNode所在操作系统的磁盘中下载到本地磁盘。

写数据流程

客户端创建fs对象向NameNode请求上传文件,NameNode判断该文件是否存在,若不存在响应可以上传。
fs对象请求上传第一个数据块,NameNode通过节点距离计算,返回给客户端距离待上传数据最近并且负载小的DataNode信息。
客户端创建输出流对象与DataNode建立传输通道,把数据块写入磁盘。
fs对象通知NameNode上传成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值