前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据-HDFS的元信息和SecondaryNameNode

大数据-HDFS的元信息和SecondaryNameNode

作者头像
cwl_java
发布2019-12-25 11:31:50
3500
发布2019-12-25 11:31:50
举报
文章被收录于专栏:cwl_Java

1.5. HDFS 的元信息和 SecondaryNameNode

当 Hadoop 的集群当中, 只有一个 NameNode 的时候,所有的元数据信息都保存在了 FsImage 与 Eidts 文件当中,这两个文件就记录了所有的数据的元数据信息, 元数据信息的保存目录配置在了hdfs-site.xml 当中

代码语言:javascript
复制
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///export/servers/hadoop-3.1.1/datas/namenode/namenodedatas</value>
    </property>
    
    <property>
        <name>dfs.namenode.edits.dir</name>
        <value>file:///export/servers/hadoop-3.1.1/datas/dfs/nn/edits</value>
    </property>
1.5.1. FsImage 和 Edits 详解
  • edits
    • edits 存放了客户端最近一段时间的操作日志
    • 客户端对 HDFS 进行写文件时会首先被记录在 edits 文件中
    • edits 修改时元数据也会更新
    • 每次 HDFS 更新时 edits 先更新后客户端才会看到最新信息
  • fsimage
    • NameNode 中关于元数据的镜像, 一般称为检查点, fsimage 存放了一份比较完整的元数据信息
    • 因为 fsimage 是 NameNode 的完整的镜像, 如果每次都加载到内存生成树状拓扑结构,这是非常耗内存和CPU, 所以一般开始时对 NameNode 的操作都放在 edits 中
    • fsimage 内容包含了 NameNode 管理下的所有 DataNode 文件及文件 block 及 block 所在的 DataNode 的元数据信息.
    • 随着 edits 内容增大, 就需要在一定时间点和 fsimage 合并
1.5.2. fsimage 中的文件信息查看

官方查看文档

使用命令 hdfs oiv

代码语言:javascript
复制
    cd /export/servers/hadoop-3.1.1/datas/namenode/namenodedatas
    hdfs oiv -i fsimage_0000000000000000864 -p XML -o hello.xml
1.5.3. edits 中的文件信息查看

官方查看文档

使用命令 hdfs oev

代码语言:javascript
复制
    cd /export/servers/hadoop-3.1.1/datas/dfs/nn/edits
    hdfs oev -i  edits_0000000000000000865-0000000000000000866 -o myedit.xml -p XML
1.5.4. SecondaryNameNode 如何辅助管理 fsimage 与 edits 文件?
  • SecondaryNameNode 定期合并 fsimage 和 edits, 把 edits 控制在一个范围内
配置 SecondaryNameNode
  • SecondaryNameNode 在 conf/masters 中指定
  • 在 masters 指定的机器上, 修改 hdfs-site.xml
代码语言:javascript
复制
<property>
        <name>dfs.http.address</name>
        <value>host:50070</value>
</property>
  • 修改 core-site.xml, 这一步不做配置保持默认也可以
代码语言:javascript
复制
    <!-- 多久记录一次 HDFS 镜像, 默认 1小时 -->
    <property>
        <name>fs.checkpoint.period</name>
        <value>3600</value>
    </property>

    <!-- 一次记录多大, 默认 64M -->
    <property>
        <name>fs.checkpoint.size</name>
        <value>67108864</value>
    </property>
  1. SecondaryNameNode 通知 NameNode 切换 editlog
  2. SecondaryNameNodeNameNode 中获得 fsimage 和editlog(通过http方式)
  3. SecondaryNameNode 将 fsimage 载入内存, 然后开始合并 editlog,合并之后成为新的 fsimage
  4. SecondaryNameNode 将新的 fsimage 发回给 NameNode
  5. NameNode 用新的 fsimage 替换旧的 fsimage
特点
  • 完成合并的是 SecondaryNameNode, 会请求 NameNode 停止使用 edits,暂时将新写操作放入一个新的文件中 edits.new
  • SecondaryNameNodeNameNode 中通过 Http GET 获得 edits, 因为要和fsimage 合并, 所以也是通过 Http Get 的方式把 fsimage 加载到内存,然后逐一执行具体对文件系统的操作, 与 fsimage 合并, 生成新的fsimage,然后通过 Http POST 的方式把 fsimage 发送给 NameNode. NameNodeSecondaryNameNode 获得了 fsimage 后会把原有的 fsimage 替换为新的fsimage, 把 edits.new 变成 edits. 同时会更新 fstime
  • Hadoop 进入安全模式时需要管理员使用 dfsadmin 的 save namespace 来创建新的检查点
  • SecondaryNameNode 在合并 edits 和 fsimage 时需要消耗的内存和NameNode 差不多, 所以一般把 NameNode 和 SecondaryNameNode放在不同的机器上
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.5. HDFS 的元信息和 SecondaryNameNode
    • 1.5.1. FsImage 和 Edits 详解
      • 1.5.2. fsimage 中的文件信息查看
        • 1.5.3. edits 中的文件信息查看
          • 1.5.4. SecondaryNameNode 如何辅助管理 fsimage 与 edits 文件?
            • 配置 SecondaryNameNode
            • 特点
        相关产品与服务
        大数据
        全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档