hadoop hdfs NameNode 与 Secondary NameNode元数据操作

元数据生成与备份

在这里插入图片描述

  1. 集群启动 nameNode 节点下会生成 edit 操作日志和 fsImage 元数据文件镜像 两类数据磁盘备份, 并加载到内存中
  2. 客户端向 nameNode 请求对数据操作(增删改)
  3. nameNode 想 edit 操作日志文件追加操作记录(增删改)
  4. 文件数据追加结束后, 将 nameNode 元数据进行修改
  5. secondary NameNode 会定期检查 nameNode 中的 fsImage 和 edit 操作日志是否由于长时间追加操作导致数据量过大, 效率降低, (默认 edit 操作日志到达 100 万条, 请求 checkPoint 操作)
  6. 开始请求 checkPoint, 对元数据备份进行整理
  7. nameNode 将 增加edit 操作日志, 后续操作追加到新的 edit 操作中, 防止数据整理, 不能对数据写的问题
  8. nameNode 将 edit 操作日志和 fsImage 文件发送到 secondary NameNode
  9. secondary NameNode 将 edit 操作日志和 fsImage 加载到内存合并
  10. secondary NameNode 将内存中的数据写入到 fsImage.checkPoint文件中
  11. secondary NameNode 将 fsImage.checkPoint 发送到 NameNode 中
  12. NameNode 将 fsImage.checkPoint 重命名 fsImage 替换原来的 fsImage 文件

磁盘备份文件

在这里插入图片描述

  1. nameNode 节点元数据磁盘备份位置

  2. edits_000000000000001-00000000000000009 操作记录, 每次的操作

  3. edits_inprogress_00000000000000000095 累计的操作记录

    转成 xml 查看操作 edits_0000000000000000010-000000000000000055 记录了 55-10 次操作

    hdfs oev -p XML -i edits_0000000000000000010-000000000000000055 -o 55.xml
    

在这里插入图片描述

第 11 次操作 创建一个新的文件夹 路径/user 空间 15853658… 用户 hadoop 用户组 supergroup

  1. fsImage_00000000000000094 元数据镜像

    hdfs oiv -p XML -i fsImage_00000000000000092 -o fs.xml
    
  2. seen_txid 记录 操作次数 位置

checkPoint 检查配置

<!-- hdfs-default.xml -->
<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>3600</value>
  <description>设置 secondary NameNode 间隔时长 1h 执行 checkPoint 操作</description>
</property>

<property>
  <name>dfs.namenode.checkpoint.txns</name>
  <value>1000000</value>
<description>操作动作次数</description>
</property>

<property>
  <name>dfs.namenode.checkpoint.check.period</name>
  <value>60</value>
<description> 1分钟检查一次操作次数</description>
</property >

nameNode 故障处理

当 nameNode 中的数据丢失或其它原因数据不全时, 可以通过 secondary NameNode 对 NameNode 数据恢复

直接拷贝
  1. 停止 nameNode 节点

    kill -9 nameNodeId
    
  2. 删除 nameNode 中name 数据

    rm -rf /opt/modules/hadoop/data/tmp/dfs/name/*
    
  3. 拷贝 secondary NameNode 数据到 nameNode 下

    scp -r hadoop@hadoop164:/opt/modules/hadoop/data/tmp/dfs/namesecondary/* /opt/modules/hadoop/data/tmp/dfs/name/
    
  4. 启动 nameNode 节点

    hadoop-daemon.sh start namenode
    
  5. 启动时,刷新网页页面提示安全模式

importCheckPoint 恢复
  1. 修改hdfs-site.xml中的配置

    <!--减小检查时间-->
    <property>
      <name>dfs.namenode.checkpoint.period</name>
      <value>120</value>
    </property>
    <!--指定 nameNode 的 name 数据目录-->
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/opt/module/hadoop/data/tmp/dfs/name</value>
    </property>
    
    
  2. 停止 nameNode 节点

    kill -9 nameNodeId
    
  3. 删除 nameNode 中name 数据

    rm -rf /opt/modules/hadoop/data/tmp/dfs/name/*
    
  4. secondNameNode 与 nameNode 不在同一节点时, 将 secondaryNameNode中的数据拷贝到 nameNode 下

    scp -r hadoop@hadoop164:/opt/module/hadoop/data/tmp/dfs/namesecondary /opt/module/hadoop/data/tmp/dfs/namesecondary
    
  5. 删除 in_use.lock

    cd namesecondary/
    rm -f in_use.lock
    
  6. 导入检查点数据(过一会 ctrl+c)

    hdfs namenode -importCheckpoint
    
  7. 启动 nameNode 节点

    hadoop-daemon.sh start namenode
    
  8. 启动时,刷新网页页面提示安全模式

安全模式

  1. NameNode 启动

    NameNode 启动时, 首先将镜像文件(FsImage) 载入内存, 并执行编辑日志(Edits) 中的各项操作, 一旦在内存中成功建立文件系统元数据的映像, 则创建一个新的 FsImage 文件和一个空的编辑日志. 此时, NameNode 开始监听 DataNode 请求. 这个过程期间, NameNode 一直运行在安全模式,即 NameNode 的文件系统对客户端来说是只读的.

  2. DataNode 启动

    系统中的数据块的位置并不是由 NameNode 维护的, 而是以块列表的形式存储在 DataNode 中, 在系统的正常操作期间, NameNode 会在内存中保留所有块位置的映射信息. 在安全模式下, 各个 DataNode 会向 NameNode 发送最新的块列表信息, NameNode 了解到足够多的块位置信息后, 即可高效运行文件系统.

  3. 安全模式退出判断

    如果满足"最小副本条件", NameNode 会在 30 秒后退出安全模式. 最小副本条件指的是在整个文件系统中 99.9%的块满足最小副本级别(默认值:dfs.replication.min=1). 在启动一个刚刚格式化的 HDFS 集群时, 因为系统中没有任何块, 所有不会进入安全模式

  4. 命令操作

    hdfs dfsadmin -safemode get		(功能描述:查看安全模式状态)
    hdfs dfsadmin -safemode enter  	(功能描述:进入安全模式状态, 此时不允许操作数据)
    hdfs dfsadmin -safemode leave	(功能描述:离开安全模式状态)
    hdfs dfsadmin -safemode wait	(功能描述:等待安全模式状态, 等待安全模式退出后执行后续操作)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值