本文来源 http://www.oratea.net/?p=827
SecondNamenode名字看起来很象是对第二个Namenode,要么与Namenode一样同时对外提供服务,要么相当于Namenode的HA。
真正的了解了SecondNamenode以后,才发现事实并不是这样的。
下面这段是Hadoop对SecondNamenode的准确定义:
* The Secondary Namenode is a helper to the primary Namenode.
* The Secondary is responsible for supporting periodic checkpoints
* of the HDFS metadata. The current design allows only one Secondary
* Namenode per HDFs cluster.
*
* The Secondary Namenode is a daemon that periodically wakes
* up (determined by the schedule specified in the configuration),
* triggers a periodic checkpoint and then goes back to sleep.
* The Secondary Namenode uses the ClientProtocol to talk to the
* primary Namenode.
SecondNamenode是对主Namenode的一个补充,它会周期的执行对HDFS元数据的检查点。
当前的设计仅仅允许每个HDFS只有单个SecondNamenode结点。
SecondNamenode是有一个后台的进程,会定期的被唤醒(唤醒的周期依赖相关配置)执行检查点任务,然后继续休眠。
它使用ClientProtocol协议与主Namenode通信。
1,检查点到底是做什么用的呢?
先抛开SecondNamenode不说,先介绍下Namenode中与检查点相关的两个文件,以及他们之间的关系。
fsimage文件与edits文件是Namenode结点上的核心文件。
Namenode中仅仅存储目录树信息,而关于BLOCK的位置信息则是从各个Datanode上传到Namenode上的。
Namenode的目录树信息就是物理的存储在fsimage这个文件中的,当Namenode启动的时候会首先读取fsimage这个文件,将目录树信息装载到内存中。
而edits存储的是日志信息,在Namenode启动后所有对目录结构的增加,删除,修改等操作都会记录到edits文件中,并不会同步的记录在fsimage中。
而当Namenode结点关闭的时候,也不会将fsimage与edits文件进行合并,这个合并的过程实际上是发生在Namenode启动的过程中。
也就是说,当Namenode启动的时候,首先装载fsimage文件,然后在应用edits文件,最后还会将最新的目录树信息更新到新的fsimage文件中,然后启用新的edits文件。
整个流程是没有问题的,但是有个小瑕疵,就是如果Namenode在启动后发生的改变过多,会导致edits文件变得非常大,大得程度与Namenode的更新频率有关系。
那么在下一次Namenode启动的过程中,读取了fsimage文件后,会应用这个无比大的edits文件,导致启动时间变长,并且不可能控,可能需要启动几个小时也说不定。
Namenode的edits文件过大的问题,也就是SecondeNamenode要解决的主要问题。
SecondNamenode会按照一定规则被唤醒,然后进行fsimage文件与edits文件的合并,防止edits文件过大,导致Namenode启动时间过长。
2,检查点被唤醒的条件?
以前的文章里面曾经写过相关内容,这里在回顾一下。
控制检查点的参数有两个,分别是:
fs.checkpoint.period:单位秒,默认值3600,检查点的间隔时间,当距离上次检查点执行超过该时间后启动检查点
fs.checkpoint.size:单位字节,默认值67108864,当edits文件超过该大小后,启动检查点
上面两个条件是或的关系,主要满足启动一个条件,检查点即被唤醒
3,检查点执行的过程?
a,初始化检查点
b,通知Namenode启用新的edits文件
c,从Namenode下载fsimage和edits文件
d,调用loadFSImage装载fsimage
e,调用loadFSEdits应用edits日志
f,保存合并后的目录树信息到新的image文件中
g,将新产生的image上传到Namenode中,替换原来的image文件
h,结束检查点
4,SecondNamenode最好于Namenode部署到不同的服务器
应该在merge的过程中,SecondNamenode对内存的需求与Namenode是相同的,所以对于那些大型的生产系统中,如果将两者部署到同台服务器上,在内存上会出现瓶颈。
所以最好将他们分别部署到不同的服务器。
修改hadoop配置文件的master文件。
5,关于SecondNamenode的思考
其实检查点的执行过程最好在Namenode结点搞定,也就说能有个任务定期的将Namenode的内存结果刷新到fsimage中,而不是仅仅在Namenode启动的时候才进行一次合并。
如果可以实现定期的对Namenode执行检查点,那么SecondNamenode完全没有存在的必要了。
或者在SecondNamenode方面实现增量的刷新,每次不需要将fsimage整个装载到内存中,而仅仅将增量刷新就OK了。
不过这样会让系统变得复杂一些,可以参考oracle中的检查点的处理,还是有些复杂的。
简单就是美?!!
分享到:
相关推荐
《Hadoop技术详解》这本书是关于Hadoop操作的详尽指南,它涵盖了Hadoop生态系统中的核心组件、工作原理以及实际操作技巧。Hadoop是大数据处理领域的重要工具,它以其分布式计算框架闻名,允许企业在大规模数据集上...
根据提供的文件信息,我们可以推断出这是一本关于Hadoop技术的电子书,该书提供了PDF格式供读者下载,并带有书签目录以便于导航。接下来,我们将深入探讨Hadoop技术的相关知识点。 ### Hadoop概述 Hadoop是一个...
### Hadoop 分布式存储与计算框架详解 #### 一、引言 随着互联网技术的飞速发展,数据量呈爆炸性增长趋势,传统的数据处理方法已无法满足需求。为了解决大规模数据处理的问题,Hadoop应运而生。本文将详细介绍...
本课程“Hadoop大数据开发与性能调优实战培训课程-Hadoop组件详解”旨在深入探讨Hadoop的主要组件及其优化策略,帮助开发者和数据工程师提升在大数据环境中的实践能力。 首先,我们要了解Hadoop的基础架构,它主要...
主要讲解 Hadoop Hbase的使用和原理,包括Hbase官方文档的翻译,还有Java对Hbase的操作等。
Hadoop安装详解 步骤完整 通俗易懂 只要你不傻 肯定能看明白
"006_hadoop中MapReduce详解_3"可能是指一个系列教程的第三部分,着重讲解MapReduce的核心概念、工作原理以及实际应用。在这个部分,我们可能会探讨更深入的技术细节和优化策略。 MapReduce的工作流程分为两个主要...
内容概要:本文首先介绍了Hadoop框架的基本原理,包括分布式文件系统(HDFS)、MapReduce及YARN等核心组件的技术特性,并通过具体示例进行了讲解。随后详细分析了数据采集预处理、数据存储与管理系统,及数据处理和...
Hadoop集群搭建详解 Hadoop是一个大数据处理框架,由Apache基金会开发和维护。它提供了一个分布式计算环境,能够处理大量数据。Hadoop生态系统包括了多个组件,如HDFS、MapReduce、YARN、HBase、Hive等。 Hadoop...
Hadoop fs命令详解 Hadoop fs命令是Hadoop分布式文件系统(HDFS)的命令行接口,提供了丰富的文件操作命令,方便用户管理和维护HDFS文件系统。本文将详细介绍Hadoop fs命令的使用方法和实践操作。 基本命令 ...
在这个详解中,我们将深入理解如何在Fedora和Ubuntu系统上搭建一个Hadoop集群。 首先,为了确保集群中的节点能够相互识别,我们需要配置静态IP地址。在Ubuntu系统中,可以通过图形界面进行配置,而在Fedora系统中,...
由于给定的文件内容部分涉及到PDF电子书的提供信息,并非技术知识点,故这部分内容将被忽略,重点将放在标题与描述所提到的Hadoop海量数据处理技术上。 Hadoop是一个由Apache软件基金会开发的开源框架,旨在支持...
Hadoop是一种开源框架,用于分布式存储和处理大数据。它依赖于多个配置文件来定义其运行时行为。了解这些配置文件是实施和优化Hadoop集群的重要部分。核心配置文件core-site.xml涉及整个Hadoop环境的设置,而hdfs-...
《大数据技术丛书:Hadoop应用开发技术详解》共12章。第1~2章详细地介绍了Hadoop的生态系统、关键技术以及安装和配置;第3章是MapReduce的使用入门,让读者了解整个开发过程;第4~5章详细讲解了分布式文件系统HDFS...
007 What is Apache Hadoop讲解 008 Hadoop 的发展史和版本发展与区别 009 Hadoop 生态系统介绍讲解 010 Hadoop 生态系统介绍讲解 011 Hadoop 服务讲解 012 HDFS 架构的讲解 013 MapReduce 架构讲解和MapReduce思想...
Apache Hadoop 是一个开源分布式计算框架,主要用于处理和存储海量数据。Hadoop 的版本发展历经了几个关键阶段,主要区分于其引入的重要特性。本文将深入解析不同版本之间的差异,帮助理解Hadoop的核心进化。 首先...
共59页,主要内容: 1、理解HDFS原理 2、掌握mapreduce原理和开发 3、应用举例讲解
### 详解Hadoop核心架构HDFS #### HDFS体系架构概览 Hadoop作为一个领先的开源分布式计算框架,其核心组成部分之一便是Hadoop Distributed File System(HDFS),它为大规模数据处理提供了高效、可靠且可扩展的...
Hadoop源代码详解.doc