Hadoop–namenode的架构
文章目录
一.namenode的工作目录
namenode的工作目录位置配置在core-site.xml文件内 ,namenode的目录如下:
- edits_0000xxxx -> 数据历史操作日志文件
- edits_inprogress_000xxx -> 数据预写操作日志文件
- fsimage_000xxx -> 磁盘元数据镜像文件
- VERSION -> HDFS版本信息的描述文件
- in_use.lock -> 一个锁文件,namenode使用该文件为存储目录枷锁,避免其它namenode实例同时使用同一个存储目录的情况
二.VERSION(存放 hdfs 集群的版本信息)文件解析:
#Sun Jan 06 20:12:30 CST 2017 ## 集群启动时间
namespaceID=844434736 ## 文件系统唯一标识符
clusterID=CID-5b7b7321-e43f-456e-bf41-18e77c5e5a40 ## 集群唯一标识符
cTime=0 ## fsimage 创建的时间,初始为 0,随 layoutVersion 更新
storageType=NAME_NODE ##节点类型
blockpoolID=BP-265332847-192.168.123.202-1483581570658 ## 数据块池 ID,可以有多个
layoutVersion=-60 ## hdfs 持久化数据结构的版本号
三.namenode的元数据存储机制
1.内存中有一份完整的元数据文件matedata;
2.磁盘中有持久化元数据镜像文件fsimage和edits操作文件(edits,edits_inprogress);
3.操作文件,edits和edits_inprogress,edits_inprogress是可以打开的,操作日志写在这里面;
4.edits文件不会一直增长,会有一个和镜像文件fsimage合并的过程(CheckPoint)。
四.元数据的CheckPoint
每隔一段时间,会由 secondary namenode 将 namenode 上积累的所有 edits 和一个最新的fsimage 下载到本地,并加载到内存进行 合并(这个过程称为 checkpoint)。
CheckPoint 详细过程图解:
CheckPoint 触发配置
触发条件:默认3600s或者操作1000000次
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=3600 ##两次 checkpoint 之间的时间间隔 3600 秒
dfs.namenode.checkpoint.txns=1000000 ##两次 checkpoint 之间最大的操作记录
CheckPoint 附带作用
Namenode 和 SecondaryNamenode 的工作目录存储结构完全相同,所以,当 Namenode 故障退出需要重新恢复时,可以从SecondaryNamenode的工作目录中将fsimage拷贝到Namenode的工作目录,以恢复 namenode 的元数据