secondaryNamenode配置与nameNode故障恢复

本文详细介绍了在Hadoop 0.20.2版本中配置SecondaryNamenode的步骤,并提供了namenode故障恢复的方法,包括调整配置、检查uri、恢复checkpoint以及应对主机名变化的处理。强调了fs.checkpoint.period和fs.checkpoint.size的重要性,以及在故障恢复时如何导入checkpoint并确保数据完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*注:本文基于0.20.2配置测试,0.21以后已改成Checkpoint Node和Backup Node
一、配置
1. 在masters文件中添加 Secondary节点的主机名。
*注:masters文件用于指定secondary的主机而不是namenode,slaves用于指定datanode和tasktracker,
  namenode由core-site.xml fs.default.name指定,jobtracker由mapred-site.xml mapred.job.tracker指定

2. 修改hdfs-site.xml文件
<property>
    <name>dfs.http.address</name>
    <value>${your-namenode}:50070</value>
    <description>Secondary get fsimage and edits via dfs.http.address</description>
</property>
<property>
    <name>dfs.secondary.http.address</name>
    <value>${your-secondarynamenode}:50090</value>
    <description>NameNode get the newest fsimage via dfs.secondary.http.address</description>
</property>
*注:1、实际上dfs.http.address只在secondary设置,dfs.secondary.http.address只在namenode上设置即可,为了便于管理,集群所有机器同样配置
         2、采用默认端口(namenode:50070,secondary:50090)时可以省略该配置

2. 修改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>${hadoop.tmp.dir}/dfs/namesecondary</value>
    <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>
</property>
*注:该配置在secondary设置即可,为了便于管理,集群所有机器同样配置

3. 重启hdfs,检查是否正常启动
(*注:这一步也可以不重启hdfs,在secondary上直接  sh $HADOOP_HOME/bin/hadoop-daemon.sh start secondarynamenode  启动secondaryNamenode)
(1)重启
sh $HADOOP_HOME/bin/stop-dfs.sh
sh $HADOOP_HOME/bin/start-dfs.sh
(2)检查uri
http://namenode:50070/   #检查namenode
http://sencondnamenode:50090/ #检查secondary
(3)检查目录
检查dfs.name.dir namenode:/data1/hadoop/name
     current
     image
     previous.checkpoint
     in_use.lock #主要看时候有这个文件,文件时间戳表示namenode启动时间
检查fs.checkpoint.dir secondary:${hadoop.tmp.dir}/dfs/namesecondary
     current
     image
     in_use.lock #主要看时候有这个文件,文件时间戳表示secondnamenode启动时间
(4) 检查checkpoint是否正常
为便于测试,调整参数fs.checkpoint.period=60,fs.checkpoint.size=10240
对hdfs做一些文件增删操作,看${dfs.name.dir}/current/edits 和 ${fs.checkpoint.dir}/current/edits的变化

二、 namenode故障恢复(importCheckpoint)
*注意事项:
(1) 为了便于将随便一台datanode临时用作namenode,datanode和namenode配置需要一模一样包括conf目录下的所有文件、目录结构、环境变量
(2) 新namenode的主机名要与原namenode保持一致,主机名若是在hosts写死,需要批量替换datanode hosts文件 (用内部域名服务最好,改下域名指向即可)
(3) fs.checkpoint.dir的内容非常重要,无法保证secondnamenode不出故障,所以需要定期对secondnamenode fs.checkpoint.dir的内容做备份
(4) 最近一次check至故障发生这段时间的内容将丢失,fs.checkpoint.period参数值需要权衡,既不太频繁又尽可能保证数据完整,默认1小时
恢复步骤:
(0) 可选,当namenode主机名发生变化时(为了不影响应用,最好不好发生变化),需修改:
    [core-site.xml] fs.default.name = 新namenode
    [hdfs-site.xml] dfs.http.address = 新namenode
    [mapred-site.xml]mapred.job.tracker = 新jobtracker, 如果jobtracker与namenode在同一台机器上
(1) 确保新namenode ${dfs.name.dir}目录存在,且清空其内容
(2) 把SecondaryNameNode节点中 ${fs.checkpoint.dir} 的所有内容拷贝到新的NameNode节点的 ${fs.checkpoint.dir} 目录中
(3) 在新机器上执行 
        hadoop namenode -importCheckpoint 
     该步会从${fs.checkpoint.dir}中恢复${dfs.name.dir},并请动namenode
(4) 检查文件block完整性
        hadoop fsck /
(5) 停止namenode,使用crrl+C或者会话结束
(6) 删除新namenode ${fs.checkpoint.dir}目录下的文件(保持干净)
(7) 正式启动namenode,恢复工作完成
        sh $HADOOP_HOME/bin/hadoop_daemon.sh start namenode
在Hadoop集群中,SecondaryNameNode扮演着一个重要的角色,它通过定期合并编辑日志和名称空间镜像来减轻NameNode的负担。这个过程通常被称为检查点(checkpoint),它能够防止编辑日志过大导致的性能问题,并在NameNode出现故障时提供恢复元数据的能力。为了配置SecondaryNameNode,你需要在hdfs-site.xml文件中设置dfs.namenode.shared.edits.dir属性指向SecondaryNameNode,同时配置SecondaryNameNode的工作目录,通过这些设置,SecondaryNameNode能够定期从NameNode接收到编辑日志和名称空间镜像,并执行合并操作。 参考资源链接:[Hadoop架构解析:NameNode、JobTracker集群瓶颈](https://wenku.csdn.net/doc/3hyjcti3sr?spm=1055.2569.3001.10343) 在MapReduce作业执行方面,JobTrackerTaskTracker的优化配置对提高作业效率至关重要。首先,确保TaskTracker有足够的资源(如CPU、内存和磁盘空间)来执行任务。其次,可以通过调整taskTRACKER.http.threads属性来提高TaskTracker的响应性能,以及通过调整taskTracker.http.threads和mapred.child.java.opts属性来控制Map和Reduce任务的内存使用。此外,合理配置任务调度策略,确保资源的有效利用,避免出现资源争抢导致的任务调度延迟。通过这些措施,可以显著提升MapReduce作业的执行效率。 对于希望深入了解Hadoop架构、集群管理以及性能优化的读者,我强烈推荐阅读《Hadoop架构解析:NameNode、JobTracker集群瓶颈》这本书。它详细讲解了Hadoop的Master/Slave架构,以及如何识别和解决集群的性能瓶颈,尤其是磁盘I/O问题,对于实际操作具有很强的指导意义。通过这本书,你可以更全面地掌握Hadoop集群的管理技巧,提高处理大数据的能力。 参考资源链接:[Hadoop架构解析:NameNode、JobTracker集群瓶颈](https://wenku.csdn.net/doc/3hyjcti3sr?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值