NameNode&Secondary NameNode 工作机制

NameNode:
1.启动时,加载编辑日志和镜像文件到内存
2.当客户端对元数据进行增删改,请求NameNode
3.NameNode记录操作日志,更新滚动日志
4.日志记录完成,在NameNode内存中对元数据进行操作
edits.001 操作日志
edits.002
edits.inprogress 正在进行的操作日志
fsimage 镜像文件
SecondaryNameNode:(其主要作用就是:合并edit和fsimage)
0.检查点(checkpoint)触发。条件是:
a.定时时间到(默认一个小时)
b.操作日志中的数据满了(100w次操作)
1.请求NameNode是否需要CheckPoint,直接带回 NameNode是否检查结果
2.执行CheckPoint请求
3.滚动正在写的操作日志,生成最新的一个操作日志
4.将操作日志和之前旧的镜像fsimage文件拷贝到SecondaryNameNode
5.在SecondaryNameNode内存中合并日志文件和fsimage文件
6.生成新的fsimage.chkpoint
7.将fsimage.chkpoint拷贝到NameNode中
8.重命名fsimage.chkpoint为fsimage

日志文件

目录结构:

$HADOOP_HOME/data/tmp/dfs/name/current
$HADOOP_DATA_HOME/tmp/dfs/name/current edits_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION 1.fsimage:
HDFS 文件系统元数据的一个永久性的检查点,其中包含 HDFS文件系统的所有目录和文件 idnode 的序列化信息
2.edits:
存放 HDFS 文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到 edits 文件中。
3.seen_txid:
文件保存的是一个数字,就是最后一个 edits_的数字 每次 Namenode 启动的时候都会将 fsimage 文件读入内存,
并从 00001 开始到 seen_txid 中记录的数字依次执行每个 edits 里面的更新操作,
保证内存中的元数据信息是最新的、同步的,可以看成 Namenode 启动的时候就将 fsimage 和 edits 文件进行了合并。

查看fsimage文件和edits文件

oiv 查看 fsimage 文件
hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径
hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-2.7.2/fsimage.xml oev 查看 edits 文件
hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径
hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-2.7.2/edits.xml

chkpoint 检查 时间 参数 设置

hdfs-default.xml

<!-- 默认:SecondaryNameNode 每隔一小时执行一次 -->
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property> <!-- 一分钟检查一次操作次数,当操作次数达到 1 百万时,SecondaryNameNode 执行一次。 -->
<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 的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。
配置步骤: (1)在 hdfs-site.xml 文件中增加如下内容
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>
</property> (2)停止集群,删除 data 和 logs 中所有数据
$ rm -rf data/ logs/
(3)格式化集群并启动。
$ bin/hdfs namenode –format
$ sbin/start-dfs.sh

本博客仅为博主学习总结,感谢各大网络平台的资料。蟹蟹!!

NameNode和SecondaryNameNode的工作机制的更多相关文章

  1. NameNode 与 SecondaryNameNode 的工作机制

    一.NameNode.Fsimage .Edits 和 SecondaryNameNode 概述 NameNode:在内存中储存 HDFS 文件的元数据信息(目录) 如果节点故障或断电,存在内存中的数 ...

  2. HDFS的NameNode与SecondaryNameNode的工作原理

    原文:https://blog.51cto.com/xpleaf/2147375 看完之后确实对nameNode的工作更加清晰一些 在Hadoop中,有一些命名不好的模块,Secondary Name ...

  3. 深刻理解HDFS工作机制

    深入理解一个技术的工作机制是灵活运用和快速解决问题的根本方法,也是唯一途径.对于HDFS来说除了要明白它的应用场景和用法以及通用分布式架构之外更重要的是理解关键步骤的原理和实现细节.在看这篇博文之前需 ...

  4. Hadoop_09_HDFS 的 NameNode工作机制

    理解NameNode的工作机制尤其是元数据管理机制,以增强对HDFS工作原理的理解,及培养hadoop集群运营中“性能调优” “NameNode”故障问题的分析解决能力 1.NameNode职责: H ...

  5. HDFS成员的工作机制

    NameNode工作机制 nn负责管理块的元数据信息,元数据信息为fsimage和edits预写日志,通过edits预写日志来更新fsimage中的元数据信息,每次namenode启动时,都会将磁盘中 ...

  6. hadoop及NameNode和SecondaryNameNode工作机制

    hadoop及NameNode和SecondaryNameNode工作机制 1.hadoop组成 Common MapReduce Yarn HDFS (1)HDFS namenode:存放目录,最重 ...

  7. NameNode和SecondaryNameNode工作原理剖析

    NameNode和SecondaryNameNode工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode中的元数据是存储在那里的? 1>.首先,我 ...

  8. Hadoop的namenode的管理机制,工作机制和datanode的工作原理

    HDFS前言: 1) 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 2)在大数据系统中作用: 为各类分布式运算框架(如:mapr ...

  9. hdfs namenode/datanode工作机制

    一. namenode工作机制 1. 客户端上传文件时,namenode先检查有没有同名的文件,如果有,则直接返回错误信息.如果没有,则根据要上传文件的大小以及block的大小,算出需要分成几个blo ...

随机推荐

  1. Linux之文件的压缩与解压缩

    压缩格式 .zip,.rar,.7z,.tar,.gz,.xz,.bz2,.tar.gz,.tar.xz,.tar.bz2,其中,形如*.tar.gz为tar打包,gz压缩的文件 zip压缩打包程序 ...

  2. CREATE CSS3是一款在线集成众多CSS3功能的生成器,可以在线生成常用的CSS3效果

    CREATE CSS3是一款在线集成众多CSS3功能的生成器,可以在线生成常用的CSS3效果 CREATE CSS3 彩蛋爆料直击现场 CREATE CSS3是一款在线集成众多CSS3功能的生成器,可 ...

  3. QTcpSocket类和QTcpServer类

    QTcpSocket 详细描述:QTcpSocket 类提供一个TCP套接字TCP是一个面向连接,可靠的的通信协议,非常适合于连续不断的数据传递QTcpSocket 是QAbstractSocket类 ...

  4. c# 将字符串转换为指定类型的值

    private object GetValueByProperty(string key, string value, ref Type typeValue) { Type t = typeof(T) ...

  5. QT5---应用程序发布(使用windeployqt和NSIS)

      采用动态编译的方式发布程序,即release版本. 找齐动态依赖库(.dll) 方法一   用Dependency Walker这个工具去找少了那些dll,不过这个工具也不怎么靠谱,一个比较靠谱但 ...

  6. qt在windows下的udp通信(最简单)

    qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:win7 开发环境:qt 功能: 用udp进行收发 ...

  7. Qt单元测试浅析

    Qt单元测试框架,使用于基于Qt的应用程序和库,先从一个简单的demo工程说起吧. 我们可以通过QtCreator来创建一个简单的Qt单元测试工程,夏天到了,这个demo工程的名字就叫Summer好了 ...

  8. Design Thinking Workshop @ Agile Tour 2013 Shanghai

    设计思维工作坊 上周日在2013年敏捷之旅上海站,引导分享了一个设计思维的工作坊.这个工作坊持续了3个小时.来篇流水账分享给大家. 我们的设计挑战是什么呢?左思右想,在准备设计挑战题目的时候纠结了好久 ...

  9. SYN591型 多功能数字面板表

       SYN591型 多功能数字面板表 多功能数字面板表数字面板表使用说明视频链接: http://www.syn029.com/h-pd-248-0_310_44_-1.html 请将此链接复制到浏 ...

  10. java关键字-interface

    1:是用关键字interface定义的. 2:接口中包含的成员,最常见的有全局常量.抽象方法. 注意:接口中的成员都有固定的修饰符. 成员变量:public static final 成员方法:pub ...