NameNode(名称节点,简称NN)作用:
- 文件系统命名空间,维护文件系统目录树
- 存储文件名称,
- 文件目录结构,
- 文件属性(权限,大小,创建时间,副本数及大小....),
- 文件对应的数据块及这些块所对应的数据节点,我们称为blockmap,这种映射关系存储在NN中,但是并不会持久化这种关系,这个映射关系由DN在启动的时候上报给NN。
以上关系由fsimage+editslog来存储。
DataNode(数据节点,简称DN)作用:
- 存储数据块及块校验(为了防止块损坏带来的数据读取错误)
- 每隔3秒与NN通信并发送一个心跳包;每10个心跳包向NN上报blockReport
SecondaryNameNode(辅助名称节点,简称SNN):
- 存储fsimage,editslog;
- 定期合并fsimage+editslog,合并时机由检查点(checkpoint)决定,检查点由dfs.namenode.checkpoint.period 参数定义,默认3600秒。
SNN每隔一个小时从NN上备份fsimage下来
fsimage 镜像文件,系统镜像文件,系统全量文件
editslog操作日志,读写记录操作,系统增量文件
客户端向DN写数据,如果副本数是3,客户端只需要写入1分数据,然后拷贝。
SNN流程:
SNN每隔一小时从NN上下载fsimage和edits文件,在SNN节点合并生成新的fsimage,合并完成后 把这个新的fsimage文件推送到NN节点替换掉原来的fsimage,在fsimage合并期间,NN节点的所有的操作都记录在edits中,这个时候 NN节点就有新的fsimage文件和edits文件。