1. NN 和 2NN 工作机制

  • NameNode 会产生在磁盘中备份元数据的FsImage;
  • 每当元数据有更新或者添加数据时,修改内存中的元数据并追加到Edits中;
  • SecondaryNameNode 专门用于合并 FsImage 和 Edits;

2. Fsimage 和 Edits 解析

  • 查看Fsimage: hdfs oiv -p XML -i fsimage_0000000000000000105 -o fsimage.xml

    • hdfs oiv -p 需要转换生成的文件类型 -i 镜像文件 -o 转换后文件输出路径
  • 查看Edits: hdfs oev -p XML -i edits_000000000000000104-000000000000000105 -o edits.xml

3. CheckPoint 时间设置

  • 通常情况下, SecondaryNameNode 每隔一小时执行一次;
  • 另一种情况:一分钟检查一次操作次数,当操作次数达到一百万时, SecondaryNameNode 执行一次;
// hdfs-default.xml
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</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>一分钟检查一次操作次数</description>
</property>

4. NameNode 故障处理

  • NameNode 发生故障后,可以采用两种方法恢复数据

    • 将 SecondaryNameNode 中数据拷贝到 NameNode 存储数据的目录;
    • 使用 -importCheckpoint 选项启动 NameNode 守护进程, 从而将 SecondaryNameNode 中数据拷贝到 NameNode 目录中;
      • 如果 SecondaryNameNode 和 NameNode 不在一个主机节点上,需要将 SecondaryNameNode 存储数据的目录拷贝到 NameNode 存储数据的评级目录,并删除 in_user.lock 文件;
      • bin/hdfs namenode -importCheckpoint
      • 启动 NameNode: sbin/hadoop-daemon.sh start namenode
// 第二种方式,需要修改 hdfs-site.xml 配置文件
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>120</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>NameNode中存放地址/tmp/dfs/name</value>
</property>

5. 集群的安全模式

5.1 NameNode 启动

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

5.2 DataNode 启动

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

5.3 安全模式退出判断

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

5.4 安全模式基本语法

  • 查看安全模式状态:hdfs dfsadmin -safemode get
  • 进入安全模式状态:hdfs dfsadmin -safemode enter
  • 离开安全模式状态:hdfs dfsadmin -safemode leave
  • 等待安全模式离开:hdfs dfsadmin -safemode wait

6. NameNode多目录

  • NameNode 在本地目录可以配置成多个, 且每个目录存放内容相同,增加了可靠性;
// 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>

参考资料:

NameNode 和 SecondaryNameNode的更多相关文章

  1. NameNode和SecondaryNameNode工作原理剖析

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

  2. NameNode和SecondaryNameNode(面试开发重点)

    NameNode和SecondaryNameNode(面试开发重点) 1 NN和2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 首先,我们做个假设,如果存储在NameNode节点的磁 ...

  3. hadoop及NameNode和SecondaryNameNode工作机制

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

  4. HDFS05 NameNode和SecondaryNameNode

    NameNode和SecondaryNameNode(了解) 目录 NameNode和SecondaryNameNode(了解) NN 和 2NN 工作机制 NameNode工作机制 Secondar ...

  5. HDFS【Namenode、SecondaryNamenode、Datanode】

    目录 一. NameNode和SecondaryNameNode 1.NN和2NN 工作机制 2. NN和2NN中的fsimage.edits分析 3.checkpoint设置 4.namenode故 ...

  6. 一探究竟:Namenode、SecondaryNamenode、NamenodeHA关系

    NameNode与Secondary NameNode 很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,其实并不是在这样.文章Sec ...

  7. NameNode 与 SecondaryNameNode 的工作机制

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

  8. Hadoop(9)-HDFS的NameNode和SecondaryNameNode详解

    1.NN和2NN工作机制 首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低.因此,元数据需要存放在内存中.但如果只存在内存中,一旦 ...

  9. NameNode和SecondaryNameNode的工作机制

    NameNode&Secondary NameNode 工作机制 NameNode: 1.启动时,加载编辑日志和镜像文件到内存 2.当客户端对元数据进行增删改,请求NameNode 3.Nam ...

  10. 浅谈HDFS(二)之NameNode与SecondaryNameNode

    NN与2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 假设存储在NameNode节点的硬盘中,因为经常需要随机访问和响应客户请求,必然效率太低,所以是存储在内存中的 但是,如果存储在 ...

随机推荐

  1. PHP mysqli_commit() 函数

    关闭自动提交,做一些查询,然后提交查询: <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect("localh ...

  2. Codeforces 1220 E Tourism

    题面 可以发现一个边双必然是可以随意走的,所以我们就把原图求割边然后把边双缩成一个点,然后就是一个树上dp了. #include<bits/stdc++.h> #define ll lon ...

  3. qt5 + vs2015自定义控件错误:undefend interface

    控件中编译时因为是把所有的单个控件集成到一个lib中,所以会引用#include<QDesignerCustomWidgetInterface>以及#include<QDesigne ...

  4. [python]打印异常信息的不同方式

    异常捕获 try: execpt Exception as e: print(str(e)) 打印异常信息的方式 1.str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常 ...

  5. java试题复盘——11月13日

    上: 10. AccessViolationException异常触发后,下列程序的输出结果为(   A   ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 AccessViol ...

  6. redis几种模式的部署(Windows下实现)

    <参考>http://www.cnblogs.com/ruiati/p/6374152.html 1.   自行下载redis客户端.redis官方不支持Windows系统,所以官网上是下 ...

  7. ROS indigo下Kinect v2的驱动安装与调试

    ROS indigo下Kinect v2的驱动安装与调试 一.libfreenect2源码安装与测试 github地址:https://github.com/OpenKinect/libfreenec ...

  8. linux C file format analysis

    c语言文件格式 source file file.c C source, ASCII text pretreatment 预处理文件 file.i C source, ASCII text assem ...

  9. 黑马vue---56-58、vue组件创建的三种方式

    黑马vue---56-58.vue组件创建的三种方式 一.总结 一句话总结: 不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素 1.使用 Vu ...

  10. PHP之Memcache和Memcached

    本篇文章向大家介绍的是PHP中的Memcache和Memcached ,有兴趣的朋友可以看一下 **Memcache介绍:**Memcache是一套分布式缓存系统,分布式就是说可以在多台服务器上同时安 ...