Blog
hadoop-08 NameNode和SecondaryNameNode
NN和2NN工作机制
Namenode
- 启动NameNode时候加载edits_inprogress_001和fsimage到内存中
- fsimage存储操作记录整合后的数据
- 客户端对元数据进行增删等操作
- edits_inprogress_001记录操作日志(增删操作)
- 内存数据增删操作
SecondaryNameNode
- 请求是否需要CheckPoint
- CheckPoint触发时机:定时时间到(1小时)、Edits中的数据满了(100万条记录)
- 满足CheckPoint 2NN请求执行CheckPoint
- NN 生成新的edits_inprogress_002接收新的请求
- NN将原来的edits_inprogress_001重命名为edits_001
- 2NN将edits_001和fsimage拷贝到2NN 加载到内存并合并 生成新的fsimage
- 2nn拷贝新的fsimage到nn 命名为fsimage.chkpoint
- nn 删除原来的fsimage并将fsimage.chkpoint重命名为fsimage
- 下次重启即可将新的fsimage和edits_inprogress_002加载到内存
Fsimage和Edits概念
NameNode被格式化之后,将在/opt/module/hadoop-3.1.3/data/tmp/dfs/name/current目录中产生如下文件
- Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息
- Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到Edits文件中
- seen_txid:文件保存的是一个数字,就是最后一个edits_的数字
查看Fsimage Edits文件
- oiv和oev命令
- oev 查看edits文件
- oiv查看Fsimage文件
- 基本语法
hdfs oiv -p 输出文件类型 -i 镜像文件 -o 转换后文件输出路径
hdfs oev -p 输出文件类型 -i edits文件 -o 转换后文件输出路径
示例
hdfs oiv -p XML -i fsimage_0000000000002046 -o /home/test/fsimage.xml
- NameNode并没有存储文件块存储在哪个DataNode,而是DataNode启动后告诉NameNode自己存储了哪些文件块
- Edits文件存储操作记录
- 默认1小时两个文件合并一次
- 合并的时候合并大于fsimage最大序号的所有文件
CheckPoint时间设置
- 通常情况下SecondaryNameNode每隔一小时执行一次
- hdfs-default.xml
<property>
<name>dfs.namenode.checkpoint.peroid</name>
<value>3600s</value>
</property>
一分钟检查一次操作次数,当操作次数达到100万时SecondaryNameNode执行一次
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>60s</value>
<description>1分钟检查一次操作次数</description>
</property>