`

(转)hadoop 从secondarynamenode 恢复namenode

 
阅读更多

原文地址:http://www.blogjava.net/hello-yun/archive/2012/07/27/384132.html

 

 光 从字面上来理解,很容易让一些初学者先入为主的认为: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的 机器上,这主要出于两点考虑:
  1. 可 扩展性: 创建一个新的HDFS的snapshot需要将namenode中load到内存的metadata信息全部拷贝一遍,这样的操作需要的内存就需要 和namenode占用的内存一样,由于分配给namenode进程的内存其实是对HDFS文件系统的限制,如果分布式文件系统非常的大,那么 namenode那台机器的内存就可能会被namenode进程全部占据。
  2. 容错性: 当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会比较合适。然后,通过以下步骤:




1.修改conf/core-site.xml

增加

 
<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</name> 
<value>/data/work/hdfs/namesecondary</value> 
<description>Determines where on the local filesystem the DFS secondary name node 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> 
</property>
复制代码

fs.checkpoint.period表示多长时间记录一次hdfs的镜像。默认是1小时。
fs.checkpoint.size表示一次记录多大的size,默认64M

2.修改conf/hdfs-site.xml

增加

复制代码
<property> 
<name>dfs.http.address</name> 
<value>master:50070</value> 
<description> The address and the base port where the dfs namenode web ui will listen on. If the port is 0 then the server will start on a free port. </description> 
</property>
复制代码

0.0.0.0改为namenode的IP地址

3.重启hadoop,然后检查是否启动是否成功

登录secondarynamenode所在的机器,输入jps查看secondarynamenode进程
进入secondarynamenode的目录/data/work/hdfs/namesecondary
正确的结果:
如果没有,请耐心等待,只有到了设置的checkpoint的时间或者大小,才会生成。

4.恢复

制造namenode宕机的情况
1) kill 掉namenode的进程

[root@master name]# jps 
11749 NameNode 
12339 Jps 
11905 JobTracker 
[root@master name]# kill 11749

 

2)删除dfs.name.dir所指向的文件夹,这里是/data/work/hdfs/name

[root@master name]# rm -rf *

删除name目录下的所有内容,但是必须保证name这个目录是存在的

 

3)从secondarynamenode远程拷贝namesecondary文件到namenode的namesecondary

[root@master hdfs]# scp -r slave-001:/data/work/hdfs/namesecondary/ ./

4)启动namenode

[root@master /data]# hadoop namenode –importCheckpoint

正常启动以后,屏幕上会显示很多log,这个时候namenode就可以正常访问了

5)检查

使用hadoop fsck /user命令检查文件Block的完整性

hadoop fsck /

6)停止namenode,使用crrl+C或者会话结束

7)删除namesecondary目录下的文件(保存干净)

[root@master namesecondary]# rm -rf *


8)正式启动namenode

[root@master bin]# ./hadoop-daemon.sh start namenode

恢复工作完成,检查hdfs的数据

 

9)balancer

在使用start-balancer.sh时,
默认使用1M/S(1048576)的速度移动数据(so slowly...)
修改hdfs-site.xml配置,这里我们使用的是20m/S

 
<property> 
<name>dfs.balance.bandwidthPerSec</name> 
<value>20971520</value> 
<description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description> 
</property>
 

然后结果是导致job运行变得不稳定,出现一些意外的长map单元,某些reduce时间处理变长(整个集群负载满满的情况下,外加20m/s的balance),据说淘宝的为10m/s,需要调整后实验,看看情况如何。


hadoop balancer -threshold 5

分享到:
评论

相关推荐

    Hadoop Namenode恢复

    Hadoop Namenode 恢复 Hadoop Namenode 是 Hadoop 分布式文件系统的核心组件之一,负责管理文件系统的命名空间。然而,在生产环境中,namenode 的崩溃可能会导致整个集群的不可用。因此,namenode 的恢复是非常重要...

    Hadoop中namenode和secondarynamenode工作机制讲解

    secondarynamenode并非namenode的热备份,它不会直接处理客户端的请求,其主要功能是定期合并namenode的编辑日志(edits)和命名空间镜像(FSImage),以防止编辑日志过大,减轻namenode的工作压力,并提供一种恢复...

    大数据与云计算技术 Hadoop概论和快速入门 共40页.ppt

    SecondaryNamenode,NameNode的镜像备份节点 ==Map Reduce== JobTracker,hadoop的Map/Reduce调度器,负责与TackTracker通信分配计算任务并跟踪任务进度。 TaskTracker,启动和管理Map和Reduce子任务的节点。

    HDFS中NameNode节点的配置、备份和恢复.doc

    为了恢复 NameNode 节点,需要使用 SecondaryNameNode 节点上的备份数据,并将其恢复到 NameNode 节点上。 HDFS 中 NameNode 节点的配置、备份和恢复是非常重要的, SecondaryNameNode 节点的配置和备份策略可以...

    最新大数据Hadoop面试题!(附答案解析).pdf

    SecondaryNameNode是NameNode的热备节点,负责合并编辑日志,减少NameNode启动时间。 2. HDFS Block大小 HDFS默认Block大小为64MB,用户可以根据需要进行调整。Block是HDFS的基本存储单元,一个Block可以被分割成...

    搭建hadoop伪分布式.docx

    DataNode,JobTracker,TaskTracker,SecondaryNameNode),请注意分布式运行中的这几个结点的区别:从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的...

    Hadoop试题试题库.doc

    NameNode 是 HDFS 的主节点,SecondaryNameNode 是 NameNode 的热备,帮助 NameNode 合并编辑日志,减少 NameNode 启动时间。SecondaryNameNode 应与 NameNode 部署到不同的节点。 HBase 和 MapReduce 关系 ...

    SecondaryNameNode职责.pptx

    如果NameNode出现故障,可以使用SecondaryNameNode上的最新fsimage和edits来恢复NameNode的状态,确保服务的连续性。 5. **优化NameNode启动**: - 合并后的fsimage文件使得NameNode在重启时能快速加载整个文件...

    Hadoop期末考试题总结.doc

    本资源摘要信息主要介绍了Hadoop的相关知识点,涵盖了Hadoop的版本、4V特征、大数据存储、HDFS、MapReduce、SecondaryNameNode、Hadoop shell命令、集群管理工具等方面。 1. Hadoop的最高版本是Hadoop 3.x,当前...

    大数据技术Hadoop面试题.pdf

    SecondaryNameNode并非NameNode的热备份,而是协助NameNode合并编辑日志,减少NameNode重启时的恢复时间。 4. Hadoop作者:Hadoop的作者是Doug Cutting。 5. HDFS默认Block Size:默认大小为128MB。 6. 集群瓶颈...

    Hadoop大数据平台构建、规划大数据平台集群教学课件.pptx

    在这种模式下,NameNode、DataNode、JobTracker(在Hadoop 2.x中被ResourceManger替代)、TaskTracker(被NodeManager取代)以及SecondaryNameNode分别分布在不同的节点上,确保了系统的可扩展性和容错性。...

    hadoop-3.1.3.tar.gz

    Hadoop的服务包括NameNode、DataNode、SecondaryNameNode以及ResourceManager、NodeManager等。启动Hadoop集群,可以依次执行以下命令: ``` start-dfs.sh start-yarn.sh ``` 七、验证Hadoop安装 启动成功后,可以...

    大数据技术之Hadoop知识分享 Hadoop面试题目及其答案 Hadoop面试题目整理 Hadoop使用经验 共9页.pdf

    - Hadoop的面试题涵盖了从基础概念到高级优化的各个方面,例如NameNode的角色、HDFS的数据复制策略、JobTracker和TaskTracker的工作机制、Hadoop的创始人、HDFS的块大小、集群的性能瓶颈、SecondaryNameNode的作用...

    Hadoop集群架构搭建分析

    环境搭建是指在搭建 Hadoop 集群环境的过程中需要进行的步骤,包括配置 NameNode、DataNode、JobTracker、TaskTracker、HMaster、HRegionServer、SecondaryNameNode、HQuorumPeer 等组件。 配置 NameNode 需要设置 ...

    Hadoop学习总结之五:Hadoop的运行痕迹

    - 位于`/var/log/hadoop/hadoop-namenode-namenode.out` (具体路径可能因版本而异) - 记录了HDFS元数据操作的日志信息 - **DataNode日志**: - 位于`/var/log/hadoop/hadoop-datanode-datanode.out` (具体路径可能...

    11_尚硅谷大数据之HDFS_NameNode和SecondaryNameNode1

    在Hadoop大数据存储系统中,HDFS(Hadoop Distributed File System)是核心组件之一,用于分布式存储大量数据。NameNode是HDFS的核心节点,负责管理文件系统的元数据,包括文件和目录的命名空间以及文件的块映射信息...

    hadoop-2.7.5 windows环境

    2. **启动Hadoop服务**: 先启动DataNode和SecondaryNameNode,再启动NameNode,最后启动ResourceManager和NodeManager。使用以下命令: ``` hadoop dfsadmin -safemode leave start-dfs.cmd start-yarn.cmd ```...

    《大数据技术原理与操作应用》第6章习题答案.docx

    【大数据技术原理与操作应用】第6章习题答案涉及Hadoop分布式文件系统(HDFS)、Hadoop2.x架构、高可用性(HA)配置、NameNode与SecondaryNameNode的角色、资源管理、集群性能瓶颈等多个知识点。 1. Hadoop2.0集群服务...

    hadoop3.x笔记.docx

    Hadoop 是一个基于分布式存储的大数据处理框架,本文档将详细介绍 Hadoop 3.x 的配置和底层原理,从零搭建集群以及解决遇到的问题,通过图形化的方式更好地理解 Hadoop 的作用。 一、HDFS 组成 HDFS(Hadoop ...

    大数据之hadoop伪分布模式启动.docx

    在启动Hadoop伪分布模式之前,需要先对NameNode进行格式化。格式化HDFS的命令为`hdfs namenode -format`。如果格式化成功,将显示"successfully formatted"的信息。 启动Hadoop伪分布模式 在格式化HDFS后,可以...

Global site tag (gtag.js) - Google Analytics