hadoop namenode的恢复

hadoop如何恢复namenode

 
Namenode恢复 

1.修改 conf/core-site.xml,增加 
Xml代码  复制代码  收藏代码
  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.   
  12. <property>     
  13.         <name>fs.checkpoint.dir</name>     
  14.         <value>/data/work/hdfs/namesecondary</value>     
  15.         <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>  
  16. </property>  
Xml代码   收藏代码
  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.   
  12. <property>    
  13.         <name>fs.checkpoint.dir</name>    
  14.         <value>/data/work/hdfs/namesecondary</value>    
  15.         <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>  
  16. </property>  

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

2.修改 conf/hdfs-site.xml,增加 
Xml代码  复制代码  收藏代码
  1. <property>     
  2.         <name>dfs.http.address</name>     
  3.         <value>master:50070</value>     
  4.         <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>  
  5. </property>  
Xml代码   收藏代码
  1. <property>    
  2.         <name>dfs.http.address</name>    
  3.         <value>master:50070</value>    
  4.         <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>  
  5. </property>  

0.0.0.0改为namenode的IP地址 

3.重启hadoop,然后检查是否启动是否成功。 
登录secondarynamenode所在的机器,输入jps查看secondarynamenode进程 
进入secondarynamenode的目录/data/work/hdfs/namesecondary 
正确的结果: 

如果没有,请耐心等待,只有到了设置的checkpoint的时间或者大小,才会生成。 

4.恢复 
制造namenode宕机的情况 
1) kill 掉namenode的进程 
Java代码  复制代码  收藏代码
  1. [root@master name]# jps   
  2. 11749 NameNode   
  3. 12339 Jps   
  4. 11905 JobTracker   
  5. [root@master name]# kill 11749  
Java代码   收藏代码
  1. [root@master name]# jps  
  2. 11749 NameNode  
  3. 12339 Jps  
  4. 11905 JobTracker  
  5. [root@master name]# kill 11749  


2)删除dfs.name.dir所指向的文件夹,这里是/data/work/hdfs/name 
Java代码  复制代码  收藏代码
  1. [root@master name]# rm -rf *  
Java代码   收藏代码
  1. [root@master name]# rm -rf *  

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

3)从secondarynamenode远程拷贝namesecondary文件到namenode的namesecondary 
Java代码  复制代码  收藏代码
  1. [root@master hdfs]# scp -r slave-001:/data/work/hdfs/namesecondary/ ./  
Java代码   收藏代码
  1. [root@master hdfs]# scp -r slave-001:/data/work/hdfs/namesecondary/ ./  


4)启动namenode 
Java代码  复制代码  收藏代码
  1. [root@master /data]# hadoop namenode –importCheckpoint  
Java代码   收藏代码
  1. [root@master /data]# hadoop namenode –importCheckpoint  

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

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

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

7)删除namesecondary目录下的文件(保存干净) 
Java代码  复制代码  收藏代码
  1. [root@master namesecondary]# rm -rf *  
Java代码   收藏代码
  1. [root@master namesecondary]# rm -rf *  


8)正式启动namenode 
Java代码  复制代码  收藏代码
  1. [root@master bin]# ./hadoop-daemon.sh  start namenode  
Java代码   收藏代码
  1. [root@master bin]# ./hadoop-daemon.sh  start namenode  


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



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,需要调整后实验,看看情况如何。 

Java代码  复制代码  收藏代码
  1. hadoop balancer -threshold 5  
Java代码   收藏代码
  1. hadoop balancer -threshold 5  



安全模式 
有两个方法离开这种安全模式: 
(1)修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。 
dfs.safemode.threshold.pct(缺省值0.999f) 
HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。 

(2)hadoop dfsadmin -safemode leave命令强制离开 
dfsadmin -safemode value 参数value的说明: 
enter - 进入安全模式 
leave - 强制NameNode离开安全模式 
get -  返回安全模式是否开启的信息 
wait - 等待,一直到安全模式结束。
### 回答1: "hadoop namenode -format" 是用于格式化 Hadoop 集群的 Namenode 的命令。它将删除 Namenode 上所有数据,并初始化一个新的 Namenode 存储区。在运行这个命令之前,请务必确保已经备份了重要数据,因为格式化 Namenode 后数据将不可恢复。 ### 回答2: Hadoop是一个开源的分布式计算框架,用于处理大规模数据的分布式存储和处理。它由一个分布式文件系统(HDFS)和一个分布式计算框架(MapReduce)组成,可以在大规模集群上运行,可以轻松处理大数据的存储和计算。 在Hadoop中,NamenodeHDFS的一个关键组件,它负责管理文件的命名空间和权限控制等,它也是HDFS的元数据存储的地方。当我们启动一个Hadoop集群时,我们需要确保Namenode的元数据是准确和可用的。 hadoop namenode -format是一个命令,它的主要作用是将Namenode的元数据格式化为一个全新的空间,以便在集群上使用。它会删除集群中当前Namenode上的所有数据,并创建一个新的Namenode的文件系统命名空间。换句话说,通过运行hadoop namenode -format命令,我们可以在不关闭整个集群的情况下重置Namenode上的所有元数据。 但请注意,运行此命令将删除所有Namenode上的数据,因此必须谨慎使用。此命令不会对Datanode上的数据进行任何更改。因此,我们可以使用如下步骤重新格式化Hadoop集群: 1. 关闭Hadoop集群。 2. 运行hadoop namenode -format命令来格式化Namenode上的数据,这将删除所有Namenode上的数据。 3. 启动Hadoop集群,这将创建一个新的元数据格式。 4. 确认新的集群元数据正在运行。 总之,通过运行hadoop namenode -format命令,我们可以确保Namenode的元数据准确和可用,并重新启动我们的Hadoop集群。但是,在使用这个命令之前,必须小心谨慎,因为这将删除Namenode上的所有元数据。 ### 回答3: hadoop namenode -format是一个Hadoop命令,旨在对Hadoop分布式文件系统(HDFS)的名称节点进行格式化。该命令是将该名称节点设置为初始状态的一种方法,其中所有数据都将被清除并且将重新设置初始配置。在Hadoop集群中进行格式化操作之前,需要确保停止所有节点的工作,或者在转移节点之前彻底备份数据。 Hadoop的分布式文件系统(HDFS)由维护元数据的名称节点和存储数据块的数据节点组成。名称节点存储有关HDFS中所有块和它们所在位置的元数据。此外,名称节点还维护有关文件系统中所有文件和目录的信息。因此,名称节点对于HDFS中的文件和目录是绝对必要的,因为在没有名称节点的情况下,数据节点不能找到要读取或写入的块。 在Hadoop分布式文件系统中,重要的是要记住,HDFS的数据被划分为块,然后分布在许多数据节点上。这意味着,如果名称节点在某种方式上发生故障或缺少数据,则无法访问集群中存储的任何数据。因此,当我们使用hadoop namenode -format命令进行格式化操作时,名称节点的所有数据都将被删除。 在进行格式化操作之后,必须重新启动名称节点和数据节点。在启动过程中,它将创建默认块大小和副本的文件系统。默认情况下,每个块的大小为128 MB,而每个块的副本数是3。我们可以使用Hadoop配置文件更改这些默认值。 总之,hadoop namenode -format命令是重置Hadoop分布式文件系统(HDFS)的名称节点状态的一种方式。在执行此操作之前,请确保已备份HDFS中的所有数据,以避免数据丢失。因此,请谨慎操作!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值