`

单节点配置SecondaryNameNode

阅读更多

一、SecondaryNameNode概念:

    光从字面上来理解,很容易让一些初学者先入为主:SecondaryNameNode(snn)就是NameNode(nn)的热备进程。其实不是。ssn是HDFS架构中的一个组成部分,但是经常由于名字而被人误解它真正的用途,其实它真正的用途,是用来保存namenode中对HDFS metadata的信息的备份,并减少namenode重启的时间。对于hadoop进程中,要配置好并正确的使用snn,还是需要做一些工作的。hadoop的默认配置中让snn进程默认运行在了namenode的那台机器上,但是这样的话,如果这台机器出错,宕机,对恢复HDFS文件系统是很大的灾难,更好的方式是:将snn的进程配置在另外一台机器上运行。

    在hadoop中,namenode负责对HDFS的metadata的持久化存储,并且处理来自客户端的对HDFS的各种操作的交互反馈。为了保证交互速度,HDFS文件系统的metadata是被load到namenode机器的内存中的,并且会将内存中的这些数据保存到磁盘进行持久化存储。为了保证这个持久化过程不会成为HDFS操作的瓶颈,hadoop采取的方式是:没有对任何一次的当前文件系统的snapshot进行持久化,对HDFS最近一段时间的操作list会被保存到namenode中的一个叫Editlog的文件中去。当重启namenode时,除了load fslmage意外,还会对这个Editlog文件中记录的HDFS操作进行replay,以恢复HDFS重启之前的最终状态。

    而SecondaryNameNode,会周期性的将Editlog中记录的对HDFS的操作合并到一个checkpoint中,然后清空Editlog。所以namenode的重启就会Load最新的一个checkpoint,并replay Editlog中记录的hdfs操作,由于Editlog中记录的是从上一次checkpoint以后到现在的操作列表,所以就会比较小。如果没有snn的这个周期性的合并过程,那么当每次重启namenode的时候,就会花费很长的时间。而这样周期性的合并就能减少重启的时间。同时也能保证HDFS系统的完整性。这就是SecondaryNameNode所做的事情。所以snn并不能分担namenode上对HDFS交互性操作的压力。尽管如此,当namenode机器宕机或者namenode进程出问题时,namenode的daemon进程可以通过人工的方式从snn上拷贝一份metadata来恢复HDFS文件系统。

    至于为什么要将snn进程运行在一台非NameNode的机器上,这主要出于两点考虑:

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

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

SECONDARYNAMENODE工作原理

    日志与镜像的定期合并总共分五步:

    1、SecondaryNameNode通知NameNode准备提交edits文件,此时主节点产生edits.new
    2、SecondaryNameNode通过http get方式获取NameNode的fsimage与edits文件(在SecondaryNameNode的current同级目录下可见到 temp.check-point或者previous-checkpoint目录,这些目录中存储着从namenode拷贝来的镜像文件)
    3、SecondaryNameNode开始合并获取的上述两个文件,产生一个新的fsimage文件fsimage.ckpt
    4、SecondaryNameNode用http post方式发送fsimage.ckpt至NameNode
    5、NameNode将fsimage.ckpt与edits.new文件分别重命名为fsimage与edits,然后更新fstime,整个checkpoint过程到此结束。 在新版本的hadoop中(hadoop0.21.0),SecondaryNameNode两个作用被两个节点替换, checkpoint node与backup node.         SecondaryNameNode备份由三个参数控制fs.checkpoint.period控制周期,fs.checkpoint.size控制日志文件超过多少大小时合并, dfs.http.address表示http地址,这个参数在SecondaryNameNode为单独节点时需要设置。

二、配置将SeconddaryNameNode运行在另外一台机器上

    HDFS的一次运行实例是通过在namenode机器上的$HADOOP_HOME/bin/start-dfs.sh(或者start-all.sh)脚本来启动的。这个脚本会在运行该脚本的机器上启动namenode进程,而slaves机器上都会启动DataNode进程,slave机器的列表保存在conf/slaves文件中,一行一台机器。并且会在另外一台机器上启动一个snn进程,这台机器由conf/masters文件指定。所以,这里需要严格注意,conf/masters文件中指定的机器,并不是说jobtracker或者namenode进程要运行在这台机器上,因为这些进程是运行在launch bin/start-dfs.sh或者bin/start-mapred.sh(start-all.sh)的机器上的。所以,master这个文件名是非常的令人混淆的,应该叫做secondaries会比较合适。然后通过以下步骤:

1、将所有想要运行secondarynamenode进程的机器写到masters文件中,一行一台。

2、修改在masters文件中配置了的机器上的conf/hdfs-site.xml文件,加上如下内容:

复制代码
1   <property>
2   <name>dfs.secondary.http.address</name>
3   <value>192.168.1.152:50090</value>
                                            ##如果secondarynamenode为多个话可以设置为0.0.0.0:50090
4   </property>
5   <property>
6   <name>dfs.http.address</name>
7   <value>192.168.1.151:50070</value>
8   </property>
复制代码

core-site.xml:这里有2个参数可配置,但一般来说我们不做修改。fs.checkpoint.period表示多长时间记录一次hdfs的镜像。默认是1小时。fs.checkpoint.size表示一次记录多大的size,默认64M。

复制代码
 1 <property>
 2     <name>fs.checkpoint.period</name>
 3     <value>3600</value>
 4     <description>The number of seconds between two periodic checkpoints.</description>
 5   </property>
 6   <property>
 7     <name>fs.checkpoint.size</name>
 8     <value>67108864</value>
 9     <description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn't expired.  </description>
10   </property>
11   <property>
12     <name>fs.checkpoint.dir</name>
13     <value>/app/user/hdfs/namesecondary</value>
14     <description>Determines where on the local filesystem the DFS secondary namenode should store the temporary images to merge.If this is a comma-delimited list of directories then the image is replicated in all of the directories for redundancy.</description>
15   </property>
复制代码

3、配置检查。配置完成之后,我们需要检查一次是否成功。我们可以通过查看运行secondarynamenode的机器上文件目录来确定是否成功配置。
三、恢复

    1、配置完成后,如何恢复。首先我们kill掉namenode进程,然后将hadoop.tmp.dir目录下的数据删除掉。制造master挂掉情况。

    2、在配置参数dfs.name.dir指定的位置建立一个空文件夹;把检查点目录的位置赋值给配置参数fs.checkpoint.dir;启动namenode,并加上-importCheckpoint。

    3、启动namenode的时候采用hadoop namenode -importCheckpoint.

四、Secondarynamenode的启动和停止

启动:

   bin/hadoop-daemons.sh --config conf/ --hosts masters start secondarynamenode

停止:

   bin/hadoop-daemons.sh --config conf/ --hosts masters stop secondarynamenode

五、总结

    1、secondarynamenode可以配置多个,master文件里面多写几个就可以。

    2、千万记得如果要恢复数据是需要手动拷贝到namenode机器上的,不是自动的。

    3、镜像备份的周期时间是可以修改的,如果不想一小时备份一次,可以改时间短点。

 

转自:http://www.cnblogs.com/Richardzhu/p/3435568.html

分享到:
评论

相关推荐

    Hadoop单机模式的配置与安装

    前言: 由于Hadoop属于java程序,所以,安装Hadoop之前需要先安装jdk。 对于hadoop0.20.2的单机模式安装就需要在一个节点(一台主机)上运行5个节点。...这样的一个类似于备份的节点叫做SecondaryNameNode。

    高可用性的HDFS:Hadoop分布式文件系统深度实践

    6.2.5 Primary(namenode0)节点配置 6.2.7 Data Node节点配置 6.2.8 Client节点配置 6.2.9 创建目录 6.2.10 挂载NFS 6.2.11 启动Ucarp 6.2.12 格式化 6.2.13 系统启动 6.2.14 检查 6.2.15 NameNode失效切换写文件...

    Hadoop平台搭建 1.搭建 步骤文档 2.搭建时要用到的组件安装包

    启动Hadoop集群:启动Hadoop集群的各个节点,包括NameNode、SecondaryNameNode、DataNode等。 用途: 数据存储和处理:Hadoop可以存储海量数据,并使用MapReduce等编程模型进行数据处理和分析。 数据挖掘和机器学习...

    大数据平台常见面试题.pdf

    4 2.2 配置86节点zookeeper. 5 2.3 部署87节点kafka. 5 2.4 配置87节点zookeeper. 5 第3部分 启动zookeeper. 5 3.1 启动86节点启动zookeeper-1服务... 5 3.2 启动87节点启动zookeeper-2、zookeeper-3服务... 6 第4...

    大数据开发技术.pdf

    hadoop 安装包下载 2、hadoop 安装包解压 3、hadoop 伪分布式 环境搭建环境搭建步骤如下:1、将 hadoop 安装目录添加到系统环 境变量(~/.bash_profile)2、配置 hadoop 环境的配置文件 hadoop-env.sh3、配置 ...

    大数据面试题.doc

    a)它是 NameNode 的热备 b)它对内存没有要求 c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点 多选题 8. 下列哪项可以作为集群的管理工具 a)...

    大数据面试题(1).doc

    a)它是 NameNode 的热备 b)它对内存没有要求 c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点 多选题 8. 下列哪项可以作为集群的管理工具 a)...

    大数据面试题.docx

    a)它是 NameNode 的热备 b)它对内存没有要求 c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点 大数据面试题全文共16页,当前为第2页。...

    大数据面试题-.docx

    a)它是 NameNode 的热备 b)它对内存没有要求 c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点 多选题 8. 下列哪项可以作为集群的管理工具 ...

    大数据面试题(1).docx

    a)它是 NameNode 的热备 b)它对内存没有要求 c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点 多选题 8. 下列哪项可以作为集群的管理工具 a)...

    大数据运维技术第5章 Hadoop集群运行课件.pptx

    5.2 配置Hadoop格式化;;5.3 查看JAVA进程;查看JAVA进程;查看JAVA进程;查看JAVA进程;5.4 查看HDFS的报告;查看HDFS 报告;查看HDFS 报告;5.5 使用浏览器查看节点状态 ;在浏览器的地址栏输入:50070,进入页面可以查看...

    大数据面试题,唬住50k.pdf

    a)它是 NameNode 的热备 b)它对内存没有要求 c)它的⽬的是帮助 NameNode 合并编辑⽇志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到⼀个节点 答案 C。 1. 1. 下列哪项可以作为集群的管理? a...

    hadoop安装

    编辑hadoop 配置文件 [root@a1 ~]# cd /usr/local/hadoop-0.20.2-cdh3u5/conf/ [root@a1 conf]# vi hadoop-env.sh 添加 export JAVA_HOME=/usr/java/jdk1.7.0_25 设置namenode启动端口 [root@a1 conf]# vi core-...

    4399大数据笔试题.pdf

    SecondaryNameNode B. DataNode C. TaskTracker D. JobTracker 答案:A 4.哪个是RDD的窄依赖? 5.HBase的RowKey的设计原则是什么? 6.HBase的存储底层是什么? 答案:HBase中的所有数据⽂件都存储在Hadoop HDFS⽂件...

Global site tag (gtag.js) - Google Analytics