光从字面上来理解,很容易让一些初学者先入为主的认为:SecondaryNameNode(snn)就是NameNode(nn)的热备进程。其 实不是。snn是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 fsImage意外,还会对这个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的 机器上,这主要出于两点考虑:
可扩展性: 创建一个新的HDFS的snapshot需要将namenode中load到内存的metadata信息全部拷贝一遍,这样的操作需要的内存就需要 和namenode占用的内存一样,由于分配给namenode进程的内存其实是对HDFS文件系统的限制,如果分布式文件系统非常的大,那么 namenode那台机器的内存就可能会被namenode进程全部占据。
容错性: 当snn创建一个checkpoint的时候,它会将checkpoint拷贝成metadata的几个拷贝。将这个操作运行到另外一台机器,还可以提供分布式文件系统的容错性。
配置将SecondaryNameNode运行在另外一台机器上
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)的机器上的。所以,masters这个文件名是非常的令人混淆的,应该叫做 secondaries会比较合适。然后,通过以下步骤:
将所有想要运行secondarynamenode进程的机器写到masters文件中,一行一台。
修改在masters文件中配置了的机器上的conf/hadoop-site.xml文件,加上如下选项:
Java代码 收藏代码
<property>
<name>dfs.http.address</name>
<value>namenode.hadoop-host.com:50070</value>
</property>
core-site.xml:这里有2个参数可配置,但一般来说我们不做修改。fs.checkpoint.period表示多长时间记录一次hdfs的镜像。默认是1小时。fs.checkpoint.size表示一次记录多大的size,默认64M。
Java代码 收藏代码
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
<description>The number of seconds between two periodic checkpoints.
</description>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
<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>
</property>
<property>
<name>fs.checkpoint.dir</value>
<value>yourdir</value>
</property>
3、配置检查。配置完成之后,我们需要检查一下是否成功。我们可以通过查看运行secondarynamenode的机器上文件目录来确定是否成功 配置。首先输入jps查看是否存在secondarynamenode进程。如果存在,在查看对应的目录下是否有备份记录。如下图:
该目录一般存在于hadoop.tmp.dir/dfs/namesecondary/下面。
四、恢复
1、配置完成了,如何恢复。首先我们kill掉namenode进程,然后将hadoop.tmp.dir目录下的数据删除掉。制造master挂掉情况。
2、在配置参数dfs.name.dir指定的位置建立一个空文件夹; 把检查点目录的位置赋值给配置参数fs.checkpoint.dir;
将namesecondary中的文件复制到fs.checkpoint.dir;
./hadoop namenode -importCheckpoint;
启动NameNode,并加上-importCheckpoint。(这句话抄袭的是hadoop-0.20.2/hadoop-0.20.2/docs/cn/hdfs_user_guide.html#Secondary+NameNode,看看文档,有说明)
3、启动namenode的时候采用hadoop namenode –importCheckpoint
五、总结
1、secondarynamenode可以配置多个,master文件里面多写几个就可以。
2、千万记得如果要恢复数据是需要手动拷贝到namenode机器上的。不是自动的(参看上面写的恢复操作)。
3、镜像备份的周期时间是可以修改的,如果不想一个小时备份一次,可以改的时间短点。core-site.xml中的fs.checkpoint.period值
link:http://www.cnblogs.com/xuxm2007/archive/2011/09/03/2165375.html
分享到:
相关推荐
TaskTracker 负责任务执行,HMaster 负责 HBase 集群管理,HRegionServer 负责 HBase Region 服务器,SecondaryNameNode 负责 NameNode 的热备,HQuorumPeer 负责 Zookeeper 集群管理。 在该环境中,Hadoop 是核心...
【大数据技术基础实验报告——Hadoop集群的使用和管理】 Hadoop是Apache开源项目中一个分布式计算框架,它为处理和存储大规模数据提供了强大的支持。本实验报告将深入探讨Hadoop集群的启动、管理和使用,以及如何...
在Hadoop集群中,NameNode作为主节点负责元数据管理,DataNode作为从节点存储实际数据。MapReduce框架由JobTracker和TaskTracker组成,JobTracker调度任务,TaskTracker执行任务。 在环境说明部分,我们了解到一个...
Hadoop是Apache基金会开发的一个开源分布式存储与计算平台,它能够处理大规模数据的存储和计算。...对于数据科学家和系统工程师而言,理解这些组件的工作原理对于维护和优化Hadoop集群环境具有重要的意义。
Hadoop集群是大数据处理领域中应用非常广泛的技术架构,它的核心理念是将数据存储在廉价的商用硬件上,并通过分布式存储和计算来处理海量数据。Hadoop由Apache软件基金会(ASF)孵化,Doug Cutting是Hadoop的创造者...
本章主要探讨了在Linux环境下运行Hadoop集群的关键步骤和实践,包括集群的配置、Hadoop服务的状态监控以及集群的启停操作。 1. 实验目标: 实验旨在帮助用户掌握以下技能: - 监控Hadoop的运行状态 - 配置并格式...
在构建Hadoop集群时,高可用(High Availability, HA)是一个关键特性,它旨在消除单点故障,确保服务的连续性和稳定性。本文将详细介绍如何在Hadoop 2.x版本中搭建HDFS-HA(Hadoop Distributed File System - High ...
【描述】:该压缩包文件包含了一份详细的关于Hadoop集群搭建的教程,总计10页,可能是PDF格式的文档,提供了从基础到进阶的Hadoop集群配置和管理指导。 【标签】:“Hadoop集群搭建共10页.p” - 这个标签可能是个误...
本节我们将深入探讨Hadoop集群的运行状态以及如何管理和监控Hadoop集群。 **5.1 Hadoop运行状态** Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。MapReduce是处理大规模数据的主要计算...
总的来说,搭建Hadoop集群涉及多个步骤,包括安装、配置、环境变量设置、初始化和启动等,每个环节都需要细心操作,确保集群能够正常运行。遇到问题时,根据日志信息和常见错误的解决方案进行排查,通常都能找到问题...
在这种模式下,Hadoop集群仅有一个节点,所有NameNode、DataNode、JobTracker、TaskTracker和SecondaryNameNode都在该节点上运行。虽然提供了对HDFS的访问,但因为只有一个节点,所以数据冗余只有一份,不具备真正的...
集群管理是Hadoop集群的重要组件之一,常用的集群管理工具有Puppet、Pdsh、Cloudera Manager等。 9. 机架感知 机架感知是Hadoop集群的高级功能之一,可以根据机架的拓扑结构来优化数据存储和计算。常用的机架感知...
需要注意的是,Hadoop集群的维护和监控同样重要,例如定期检查日志、监控资源使用情况、数据一致性检查以及性能优化等。此外,随着Hadoop的发展,现代版本如Hadoop 3.x引入了更多新特性,如HA(High Availability)...
在本文示例中,集群由3台服务器组成,主节点安装NameNode、SecondaryNameNode和ResourceManager,其他节点则作为工作节点运行DataNode和NodeManager。 3. 网络IP与主机名配置: 安装集群的第一步是为集群中的每台...
Master节点负责运行NameNode、SecondaryNameNode和JobTracker,而Slave节点运行DataNode和TaskTracker。为了快速创建多个虚拟节点,可以复制已安装好的Linux系统,并分别重命名主机名,如Master、Node1和Node2。 接...
2. Hadoop集群管理操作:文档描述了一系列关于Hadoop集群管理的具体操作,如停止和启动集群的命令、格式化Namenode以及在集群中增加新的节点和删除节点的过程。特别是增加新的节点时,要执行一系列脚本命令,包括...
这种方式充分利用了Spark的内存计算优势,提高了大数据处理的速度,同时YARN作为资源管理系统,负责调度和管理Spark作业的执行,确保集群资源的有效利用。 在实际部署中,要确保所有节点的配置文件一致,包括`core-...
Master节点负责运行NameNode、SecondaryNameNode和JobTracker,它们分别管理HDFS(Hadoop Distributed File System)的元数据、提供NameNode的备份以及调度MapReduce任务。而Slave节点通常包括DataNode和TaskTracker...
【大数据技术原理与操作应用】第6章习题答案涉及Hadoop分布式文件系统(HDFS)、Hadoop2.x架构、高可用性(HA)配置、NameNode与SecondaryNameNode的角色、资源管理、集群性能瓶颈等多个知识点。 1. Hadoop2.0集群服务...
大数据之Hadoop伪分布模式启动 Hadoop伪分布模式是一种特殊的Hadoop集群模式,在这种模式下,所有...Hadoop伪分布模式是一种非常有用的模式,可以模拟一个完整的Hadoop集群环境,非常适合开发、测试和学习Hadoop。