NameNode(NN)

基于内存存储,不会和磁盘交换(只存在内存中)
接受客户端的读写服务
收集DataNode汇报的Block列表信息
保存MetaData信息(文件权限,文件cun大小,时间,Block位置)

DataNode(DN)

本地磁盘目录存储数据(Block)文件形式
存储Block的元数据信息文件(校验块数据是否被破坏)
启动时DN是会向NN汇报block信息
通过向NN发送心跳(3s一次)如果NN10min没有收到心跳则认为已经lost,并copy其上的block到其他DN

SecondaryNameNode

  • 它不是第二个NN但是可以做备份,他的主要工作时帮助NN合并editslog,减少NN启动时间。
  • SNN执行editslog和fsimage的合并
  1. 配置文件的时间间隔fs.checkpoint.period默认3600s;
  2. 配置文件设置edits log 大小fs.checkpoint.size 规定edits文件的最大默认值时64M

安全模式

namenode启动时会将镜像fsimage(格式化产生 bin/hadoop hdfs -format)加载进内存,并执行edits logs
一旦加载到内存中则成功创建文件系统元数据的连接(注意元数据信息中不包括偏移量而是需要nn汇报快信息)这时候创建一个fsimage(注意这个fsimage是namenode主动创建且仅创建一次)和一个空的edits log 日志
此刻namenode运行在安全模式,及namenode的文件系统对于客户端时可读的(查正常,写,删除都会失败)
此时namenode收集各个datanode的块报告(block report),超过 datanodes blocks / total blocks >= 99.9% 这个阀值,就表示 块数量一致,在等待30S,安全模式结束
当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中的数据块的位置并不是有namenode维护的,而是以快列表的形式存在datanode中
image.png
可以通过 http://namenode1:50070 查看文件系统是否处于安全模式,如下图
HDFS组件介绍&安全模式 - 图2手动关闭安全模式命令:

  1. hdfs dfsadmin -safemode leave