NameNode职责


  • 响应客户端请求
  • 维护目录树
  • 管理元数据(查询,修改)

HDFS元数据存储


  1. 内存中有一份完整的元数据(特定数据结构)
  2. 磁盘有一个“准完整”的元数据的镜像文件
  3. 当客户端对HDFS中的文件进行新增或者修改操作,首先会在​​edits​​​文件中记录操作日志,当客户端操作成功后,相应的元数据会更新到内存中;每隔一段时间,会由​​secondary namenode​​​将​​namenode​​​上积累的所有​​edits​​​和一个最新的​​fsimage​​​下载到本地,并加载至内存进行​​merge​​​(这个过程称为​​checkpoint​​)
  4. checkpoint操作的触发条件配置参数:

    dfs.namenode.checkpoint.check.period=60 #检查触发条件是否满足的频率,60秒dfs.namenode.checkpoint. dir=file://${hadoop.tmp.dir}/dfs/namesecondary #以上两个参数做checkpoint操作时,secondary namenode的本地工作目录dfs.namenode.checkpoint.edits. dir=${dfs.namenode.checkpoint.dir}dfs.namenode.checkpoint.max -retries=3 #最大重试次数dfs.namenode.checkpoint.period =360 #两次checkpoint之间的时间间隔3600秒dfs.namenode.checkpoint.txns =1000000 #两次checkpoint之间最大的操作记录
  5. ​namenode​​​和​​secondary namenode​​​的工作目录存储结构完全相同,所以,当​​namenode​​​故障退出需要重新恢复时,可以从​​secondary namenode​​​的工作目录中将​​fsimage​​​拷贝到​​namenode​​​的工作目录,以恢复​​namenode​​的元数据。

元数据的checkpoint