文档章节

Hadoop SecondaryNameNode

ran_young
 ran_young
发布于 2016/03/23 14:56
字数 938
阅读 45
收藏 1

作用

1. SecondaryNameNode节点的主要功能是周期性将元数据节点的命名空间镜像文件和修改日志进行合并,以防日志文件过大。

2.NameNode的镜像备份,如果NameNode宕机,可以从SecondaryNameNode恢复数据,但会存在数据丢失的情况(SecondaryNameNode最后一次读取镜像和修改日志到宕机中间的数据丢失)

工作原理

    NameNode主要用来保存HDFS的元数据信息,比如命名空间信息、块信息等。为了保证效率,Namenode在启动的时候会将这些信息加载到内存中;同时,也会将这些信息持久化到硬盘中,通常会形成以下文件:空间命名镜像文件(fsimage)和修改日志文件(edits)。下图为NameNode的文件目录结构:

wKiom1OSfhvSkAAcAAAnqIht8bE706.jpg

    NameNode在启动时,会读取fsimage文件、合并edits文件。但是一般在集群中,namenode很少会重启,就导致了edits文件会逐渐变大,从而导致edits文件难以管理、重启变慢、edits文件损坏丢失过多数据等各种问题。

                               

     所以,Hadoop使用SecondaryNameNode来合并fsimage和edits文件,减少NameNode的工作量,提高Hadoop集群的可靠性。

    SecondaryNameNode的工作流程如下:

  • SecondaryNameNode节点通知NameNode节点生成新的日志文件,以后的日志都写到新的日志文件中。

  • SecondaryNameNode节点用http get从NameNode节点获得fsimage文件及旧的日志文件。

  • SecondaryNameNode节点将fsimage文件加载到内存中,并执行日志文件中的操作,然后生成新的fsimage文件。

  • SecondaryNameNode节点将新的fsimage文件用http post传回NameNode节点上。

  • NameNode节点可以将旧的fsimage文件及旧的日志文件,换为新的fsimage文件和新的日志文件(第一步生成的),然后更新fstime文件,写入此次checkpoint的时间。

  • 这样NameNode节点中的fsimage文件保存了最新的checkpoint的元数据信息,日志文件也重新开始,不会变的很大了。

             

Secondary NameNode的检查点进程启动,是由两个配置参数控制的:

  • fs.checkpoint.period(新版本dfs.namenode.checkpoint.period),指定连续两次检查点的最大时间间隔, 默认值是1小时。

  • fs.checkpoint.size(新版本有变化,但是没找到变成什么了)定义了edits日志文件的最大值,一旦超过这个值会导致强制执行检查点(即使没到检查点的最大时间间隔)。默认值是64MB。

SecondaryNameNode运行在另一台非NameNode的 机器上

SecondaryNameNode进程默认是运行在NameNode节点的机器上的,如果这台机器出错,宕机,对恢复HDFS文件系统是很大的灾难,更好的方式是:将SecondaryNameNode的进程配置在另外一台机器 上运行。至于为什么要将SNN进程运行在一台非NameNode的 机器上,这主要出于两点考虑:

  • 可扩展性: 创建一个新的HDFS的snapshot需要将namenode中load到内存的metadata信息全部拷贝一遍,这样的操作需要的内存就需要 和namenode占用的内存一样,由于分配给namenode进程的内存其实是对HDFS文件系统的限制,如果分布式文件系统非常的大,那么namenode那台机器的内存就可能会被namenode进程全部占据。

  • 容错性: 当snn创建一个checkpoint的时候,它会将checkpoint拷贝成metadata的几个拷贝。将这个操作运行到另外一台机器,还可以提供分布式文件系统的容错性。


© 著作权归作者所有

ran_young
粉丝 2
博文 14
码字总数 8786
作品 0
济南
高级程序员
私信 提问
SecondaryNameNode中的“Inconsistent checkpoint fields”错误原因

该错误原因,可能是因为没有设置好SecondaryNameNode上core-site.xml文件中的“hadoop.tmp.dir”。 2014-04-17 11:42:18,189 INFO org.apache.hadoop.hdfs.server.namenode.SecondaryNameNod......

一见蓝天
2014/04/19
0
0
hadoop启动和关闭命令

start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、JobTracker、 TaskTrack stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNo...

刺風
2017/11/27
0
0
Hadoop启动和停止脚本解释

start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、JobTracker、 TaskTrack stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNo...

593653868
2016/10/13
0
0
NameNode内存溢出和DataNode请求超时异常处理

问题背景   春节假期间,接连收到监控程序发出的数据异常问题,赶忙连接上跳板机检查各服务间的状态,发现Datanode在第二台、第三台从节点都掉线了,通过查看Datanode和Namenode运行日志,...

ELBOR&LIU
03/12
0
0
fsimage和edits合并实现

在NameNode运行期间,HDFS的所有更新操作都是直接写到edits中,久而久之edits文件将会变得很大;虽然这对NameNode运行时候是没有什么影响的,但是我们知道当NameNode重启的时候,NameNode先将...

张欢19933
2016/03/29
151
0

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
20分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
26分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
33分钟前
2
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
36分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部