Secondary NameNode:它究竟有什么作用?

  • 尽量不要将 secondarynamede 和 namenode 放在同一台机器上。

1. NameNode

NameNode 主要是用来保存 HDFS 的元数据(metadata,描述数据的数据)信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。

上面的这张图片展示了 NameNode 怎么把元数据保存到磁盘上的。这里有两个不同的文件:

  • fsimage - 它是在 NameNode 启动时对整个文件系统的快照
  • edit logs - 它是在 NameNode 启动后,对文件系统的改动序列

只有在 NameNode 重启时,edit logs才会合并到 fsimage 文件中,从而得到一个文件系统的最新快照。但是在产品集群中 NameNode 是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。在这种情况下就会出现下面一些问题:

  • edit logs 文件会变的很大,怎么去管理这个文件是一个挑战。
  • NameNode 的重启会花费很长时间,因为有很多改动[笔者注:在edit logs中]要合并到 fsimage 文件上。
  • 如果NameNode挂掉了,那我们就丢失了很多改动因为此时的 fsimage 文件非常旧。[笔者注: 笔者认为在这个情况下丢失的改动不会很多, 因为丢失的改动应该是还在内存中但是没有写到 edit logs 的这部分。]

因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edit logs文件的大小和得到一个最新的 fsimage 文件,这样也会减小在NameNode上的压力。这跟 Windows 的恢复点(restore point)是非常像的,Windows 的恢复点机制允许我们对 OS 进行快照(snapshot),这样当系统发生问题时,我们能够回滚到最新的一次恢复点上。

SecondaryNameNode 就是来帮助解决上述问题的,它的职责是合并 NameNode 的 edit logs 到 fsimage(FileSystem 镜像)文件中。

1. Secondary NameNode: 它究竟有什么作用?

在Hadoop中,有一些命名不好的模块,Secondary NameNode 便是其中之一。从名字上看,它给人的感觉就像是 NameNode 的备份。但它实际上却不是。很多 Hadoop 的初学者都很疑惑,Secondary NameNode究竟是做什么的,而且它为什么会出现在 HDFS 中。因此,在这篇文章中,我想要解释下Secondary NameNode 在 HDFS中所扮演的角色。

从它的名字来看,你可能认为它跟 NameNode 有点关系。没错,你猜对了。

上面的图片展示了 Secondary NameNode 是怎么工作的。

首先,它定时到 NameNode 去获取edit logs,并更新到 fsimage 上。[笔者注:Secondary NameNode自己的fsimage]

一旦它有了新的 fsimage 文件,它将其拷贝回 NameNode 中。

NameNode 在下次重启时会使用这个新的 fsimage 文件,从而减少重启的时间。

Secondary NameNode 的整个目的是在 HDFS 中提供一个检查点。它只是NameNode 的一个助手节点。这也是它在社区内被认为是检查点节点的原因。

现在,我们明白了 Secondary NameNode所做的不过是在文件系统中设置一个检查点来帮助 NameNode 更好的工作。它不是要取代掉 NameNode 也不是 NameNode 的备份。所以从现在起,让我们养成一个习惯,称呼它为检查点节点吧。

SecondaryNameNode 的作用的更多相关文章

  1. Hadoop的SecondaryNameNode的作用是什么?

    为节省篇幅,将SecondaryNameNode简称SNN,NameNode简称NN. NN与fsimage.edits文件 NN负责管理HDFS中所有的元数据,包括但不限于文件/目录结构.文件权限. ...

  2. NameNode和SecondaryNameNode工作原理剖析

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

  3. 将 SecondaryNameNode 配置到 s105 节点上

    相关链接  Hadoop 完全分布式安装 0. 说明 SecondaryNameNode 的作用  参考[待补充] 在 Hadoop 完全分布式的基础之上配置 将 SecondaryNameNode ...

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

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

  5. NameNode和SecondaryNameNode

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_37838429/artic ...

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

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

  7. HDFS原理讲解

    简介 本文是笔者在学习HDFS的时候的学习笔记整理, 将HDFS的核心功能的原理都整理在这里了. [广告] 如果你喜欢本博客,请点此查看本博客所有文章:http://www.cnblogs.com/x ...

  8. [HDFS_1] HDFS 的概念和特性

    0. 参考 HDFS你一定要知道,要考的 大数据开发实战:HDFS和MapReduce优缺点分析 SecondaryNamenode的作用详解 1. HDFS 是什么 HDFS :一种分布式文件系统, ...

  9. Hadoop学习之路(十二)分布式集群中HDFS系统的各种角色

    NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...

随机推荐

  1. 1.8 Python基础知识 - 数值类型

    一.int类型(任意精度整数) 整型类型(int)是表示整数的数据类型.与其他计算机语言有精度限制不同,Python的整数位数可以为任意长度位数(只受限制于计算机内存) 数字字符串即整型常量. pyt ...

  2. android studio执行 Information:Gradle tasks [:app:assembleDebug]失败处理

    Error:Execution failed for task ‘:app:mergeDebugResources’. > Some file crunching failed, see log ...

  3. 浅析C#组件编程中的一些小细节

    控件与组件的区别(Control&Component的区别) 作者:作者不详  发布日期:2011-06-30 12:08:41 控件与组件的区别(Control&Component的 ...

  4. vue的使用(一)

    之前找了一个学前端的同学,给我免费做几个页面,但是后来也就杳无音信了,今天脑子发热自己学一下vue算了. 本节目标:      安装以及数据绑定 1.安装和运行 ·必须要安装nodejs,这个到网上写 ...

  5. 【hdu 6214】Smallest Minimum Cut

    [链接] 我是链接,点我呀:) [题意] 求最小割中最少的边数. [题解] 模板题 [代码] const int INF = 1e9; const int maxn = 1e3 + 7; const ...

  6. 从Unreal Engine 3到Unreal Engine 4

    Unreal Engine 4公布好长好长时间了.直到近期才有时间细致去看一下. TimSweeney老大一句话"IF YOU LOVE SOMETHING, SET IT FREE&quo ...

  7. jquery-validate使用.md

    html <form id="s_form" class="form-horizontal" action="http://www.baidu. ...

  8. DOS 命令forfiles

    forfiles /p E:/dbbackup/diff /s /m *.* /d -14 /c "cmd /c del @file" forfiles: /p 指定的路径 /s ...

  9. PDO中获取结果集

    fetch()方法 fetch()方法用于获取结果集的下一行.语法例如以下: mixed PDOStatement::fetch([int fetch_style][,int cursor_orien ...

  10. Java 开发规约插件

    阿里巴巴 Java 开发规约插件初体验 阿里巴巴 Java 开发手册 又一次来谈<阿里巴巴 Java 开发手册>,经过这大半年的版本迭代,这本阿里工程师们总结出来避免写出那么多 Bug 的 ...