HDFS中NameNode工作机制
1.NameNode的主要功能
(1)负责客户端请求的响应;

(2)负责元数据的管理。

2.元数据管理
namenode对数据管理采用了三种存储形式:

(1)内存元数据;

(2)磁盘元数据镜像文件;

(3)数据操作日志文件(可以通过日志运算出元数据)。

2.1元数据的存储机制
(1)内存中有一份完整的元数据(meta data);

(2)磁盘中有一个元数据镜像文件(fsimage),fsimage是HDFS文件系统存于硬盘中的元数据检查点,里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息;

(3)用于衔接内存meta data和持久化元数据镜像fsimage之间的操作日志(edits文件);edits保存了自最后一次检查点之后所有针对HDFS文件系统的操作,比如:增加文件、重命名文件、删除目录等等。

这两种文件存放在${dfs.namenode.name.dir}/current/目录下,文件名以edits_和fsimage_命名,该目录为NameNode上的本地目录。为了保证这两种元数据文件的高可用性,一般的做法,将dfs.namenode.name.dir设置成以逗号分隔的多个目录,这多个目录至少不要在一块磁盘上,最好放在不同的机器上。

2.2手动查看元数据
由于这fsimage和edits是经过序列化的,非文本的,因此无法直接查看,Hadoop2.X中,hdfs提供了查看这两种文件的工具。

(1)命令hdfs oiv用于将fsimage文件转换成其他格式的,如文本文件、XML文件。

该命令需要以下参数:

必须参数:-i 输入fsimage文件,-o 输出文件路径,如果该路径已存在,则覆盖.

可选参数:-p 将fsimage转换成哪种格式,有Ls/XML/FileDistribution,默认为Ls。

-h 显示帮助信息。

(2)命令hdfs oev用于查看edits文件

该命令需要以下参数:

必须参数:-i 输入edits文件,如果是xml后缀,表示XML格式,其他表示二进制。

可选参数:-p 将edits转换成哪种格式,有Ls/XML/FileDistribution,默认为Ls。

-h 显示帮助信息。

-f 重置输入edits文件中的transaction IDs。

-r 使用recovery模式,跳过edits中的错误记录。

-v 打印处理时的输出。

2.3 元数据的checkpoint
每隔一段时间,会由secondary namenode将namenode上积累的所有edits和一个最新的fsimage下载到本地,并加载到内存进行merge,这个过程称为checkpoint。

checkpoint操作的触发条件配置参数,在hdfs-site.xml文件配置

dfs.namenode.checkpoint.check.period=  #检查触发条件是否满足的频率,60秒

dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary   // 配置从Active namenode 下载的镜像文件临时存放的节点。

dfs.namenode.checkpoint.edits.dir=${dfs.namenode.checkpoint.dir}    //  配置从Active namenode 下载的编辑日志临时存放的节点。

dfs.namenode.checkpoint.max-retries=  #最大重试次数

dfs.namenode.checkpoint.period=  #两次checkpoint之间的时间间隔3600秒

dfs.namenode.checkpoint.txns= #两次checkpoint之间最大的操作记录

checkpoint的作用
namenode和secondary namenode或者 standby namenode的工作目录存储结构完全相同,所以,当namenode故障退出需要重新恢复时,可以从 secondary namenode的工作目录中将fsimage拷贝到namenode的工作目录,以恢复namenode的元数据。

参考文章

https://blog.csdn.net/qq_34715484/article/details/80166665

Hadoop NameNode 元数据以及查看元数据的方式的更多相关文章

  1. Hadoop NameNode元数据相关文件目录解析

    在<Hadoop NameNode元数据相关文件目录解析>文章中提到NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件: 1 current/ ...

  2. MongoDB导入bson文件(元数据),mongorestore命令行方式导入

    MongoDB导入bson文件(元数据),mongorestore命令行方式导入 不推荐使用MongoDB Compass等图形化数据库管理软件,例如MongoDB Compass只能导入json和c ...

  3. NameNode是如何存储元数据的?

    1.NN的作用 保存HDFS上所有文件的元数据! 接受客户端的请求! 接受DN上报的信息,给DN分配任务(维护副本数)! 2.元数据的存储 元数据存储在fsiamge文件+edits文件中! fsim ...

  4. hadoop namenode HA集群搭建

    hadoop集群搭建(namenode是单点的)  http://www.cnblogs.com/kisf/p/7456290.html HA集群需要zk, zk搭建:http://www.cnblo ...

  5. hadoop namenode启动过程详细剖析及瓶颈分析

    NameNode中几个关键的数据结构 FSImage Namenode 会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之后到下次保存之间的所有hdfs操 ...

  6. Hadoop记录-Hadoop NameNode 高可用 (High Availability) 实现解析

    Hadoop NameNode 高可用 (High Availability) 实现解析   NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDF ...

  7. Hadoop namenode启动瓶颈分析

    NameNode启动过程详细剖析 NameNode中几个关键的数据结构 FSImage Namenode会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之 ...

  8. 通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置

    通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置 配置H ...

  9. hadoop一些常见报错的解决方式

    Failed to set setXIncludeAware(true) for parser 遇到此问题通常是jar包冲突的问题. 一种情况是我们向java的lib文件夹加入我们自己的jar包导致h ...

随机推荐

  1. Swift之xib模块化设计

    一.解决问题 Xib/Storybarod可以方便.可视化的设置约束,在开发中也越来越重要.由于Xib不能组件化,使得封装.重用都变得不可行.本文将介绍一种解决方案,来实现Xib组件化. 二.模型块原 ...

  2. vue-cli 3.0 安装

    一.安装vue-cli 脚手架命令 npm install -g vue-cli   适用于vue-cli 2.0 npm install -g @vue/cli 适用于vue-cli 3.0 卸载命 ...

  3. 博客使用 utterances 作为评论系统

    utterances 是一款基于 GitHub issues 的评论工具. 相比同类的工具 gitment.gitalk 以及 disqus 评论工具,优点如下: 极其轻量 加载非常快 配置比较简单 ...

  4. vue和react之间的区别

    1.Vue和React之间的区别 相同点: Vue和其他框架一样,都有组件开发和虚拟dom 都支持props进行父子组件之间的数据通信 都支持数据驱动视图,不直接操作真实dom 都支持服务器端的 渲染 ...

  5. Multipath 多路径配置说明

    查看主机或者存储交换机上的www号,在存储上将LUN映射给需要的主机 cat  /sys/class/fc_host/host*/port_name 0x2002d0431efb7f5d 6d 该ww ...

  6. svn代码冲突

    转自:https://blog.csdn.net/pengweid/article/details/49821117 svn代码提交报以下错误,错误原因: [MenuUCCImpl] 代码冲突 org ...

  7. AE二次开发,解决子窗体使用父窗体的AxControl控件

    在子窗体写构造函数,然后再在父窗体按钮点击事件下写 public frmIDW(AxMapControl axMapControl1) { InitializeComponent(); this.ax ...

  8. mysql 模糊查询like小结

    以不完整的条件进行查询 因为条件是模糊的 所以叫模糊查询,可以对有相同信息的数据快速归类 . like  运算符:可以很好的通过%和-两种通配符对数据进行筛选查询 %(所有)放在条件前中后.可查询包含 ...

  9. 【spark】spark应用(分布式估算圆周率+基于Spark MLlib的贷款风险预测)

    注:本章不涉及spark和scala原理的探讨,详情见其他随笔 一.分布式估算圆周率 计算原理:假设正方形的面积S等于x²,而正方形的内切圆的面积C等于Pi×(x/2)²,因此圆面积与正方形面积之比C ...

  10. 基于django的生成二维码的接口

    原理就是在视图层写一个将数据生成二维码的视图函数: def generate_qrcode(request, data): img = qrcode.make(data) buf = BytesIO( ...