Hadoop, 大数据

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>