NameNode(nn)名称节点
1)存储文件系统的命名空间,包括:
- 文件名称
- 文件目录结构
- 文件属性(权限、创建时间、副本数)
- 文件对应的哪些块(副本块),块对应在哪些dn节点上
nn一般不会持久化存储这个map的映射关系,一般是在集群启动和运行时,dn定期的发送blockreport给nn,那么nn就在内存中动态维护这种映射关系。
2)对于NameNode如何存储这些信息,它维护两个文件,一个是fsimage,一个是editlog。
- fsimage保存了最新的元数据检查点,在HDFS启动时加载fsimage的信息,包含了整个HDFS文件系统的所有目录和文件的信息。
对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。 - editlog主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。
3)主要作用:管理文件系统的命名空间
DataNode(dn)数据节点
1)存储数据块和数据块校验和
与nn通信:
a.每隔3秒发一个心跳包
dfs.heartbeat.interval=3秒
b.每隔6小时发送一次blockreport块报告
dfs.blockreport.intervalMsec= 21600000ms=6小时
(生产上这两个参数不要随意调整)
2)主要作用:读写文件的数据块
SecondaryNameNode(snn)第二名称节点
作用:定期合并nn节点的fsimage+editlog为新的fsimage,推送给nn,简称检查点checkpoint。影响checkpoint的两个参数:
时间间隔:dfs.namenode.checkpoint.period=3600
操作事务数:dfs.namenode.checkpoint.txns=1000000
NN:
edits_0000000000000000404-0000000000000000404
edits_0000000000000000405-0000000000000000406 拷贝editlog
edits_inprogress_0000000000000000407 正在写的日志 (系统正在运行)
fsimage_0000000000000000404 拷贝fsimage
fsimage_0000000000000000404.md5
fsimage_0000000000000000406
fsimage_0000000000000000406.md5
SNN:
edits_0000000000000000208-0000000000000000403
edits_0000000000000000405-0000000000000000406
fsimage_0000000000000000404 包含了过往的所有的editlog001-404
fsimage_0000000000000000404.md5
fsimage_0000000000000000406 生成了406的fsimage镜像,并推送给nn
fsimage_0000000000000000406.md5
合并过程
- 滚动新的editlog文件edits_inprogress_0000000000000000407
- 将edits_0000000000000000405-0000000000000000406 fsimage_0000000000000000404 拷贝到snn节点
- 合并为新的image:fsimage_0000000000000000406
- 将检查点的fsimage_0000000000000000406文件推送给nn
- 滚动edits_inprogress_0000000000000000407 写满,就滚动到下一个editlog,比如edits_inprogress_0000000000000000408