NameNode职责
- 响应客户端请求
- 维护目录树
- 管理元数据(查询,修改)
HDFS元数据存储
- 内存中有一份完整的元数据(特定数据结构)
- 磁盘有一个“准完整”的元数据的镜像文件
- 当客户端对HDFS中的文件进行新增或者修改操作,首先会在
edits
文件中记录操作日志,当客户端操作成功后,相应的元数据会更新到内存中;每隔一段时间,会由secondary namenode
将namenode
上积累的所有edits
和一个最新的fsimage
下载到本地,并加载至内存进行merge
(这个过程称为checkpoint
) -
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之间最大的操作记录
namenode
和secondary namenode
的工作目录存储结构完全相同,所以,当namenode
故障退出需要重新恢复时,可以从secondary namenode
的工作目录中将fsimage
拷贝到namenode
的工作目录,以恢复namenode
的元数据。