2018-3-11 HDFS2.X

HDFS HA原理与配置
本文介绍了HDFS高可用(HA)的实现原理及其配置方法。重点探讨了Facebook AvatarNode的设计理念及其对Hadoop 2.0的影响,还讨论了通过NFS共享元数据和实时复制FsEdits的方法。此外,还介绍了Cloudera提出的Quorum Journal Manager(QJM),这是一种基于Paxos算法的HA解决方案。

HDFS 2.X

资源:

hadoop(二):hdfs HA原理及安装 - 天戈朱 - 博客园
https://www.cnblogs.com/tgzhu/p/5790565.html



Facebook AvatarNode:Facebook有强大的运维做后盾,所以Avatarnode只是Hot Standby,并没有自动切换,当主NN失效的时候,需要管理员确认,然后手动把对外提供服务的虚拟IP映射到Standby NN,这样做的好处是确保不会发生脑裂的场景。其某些设计思想和Hadoop 2.0里的HA非常相似,从时间上来看,Hadoop 2.0应该是借鉴了Facebook的做法

  • Facebook AvatarNode 原理示例图
  • PrimaryNN与StandbyNN之间通过NFS来共享FsEdits、FsImage文件,这样主备NN之间就拥有了一致的目录树和block信息;而block的位置信息,可以根据DN向两个NN上报的信息过程中构建起来。这样再辅以虚IP,可以较好达到主备NN快速热切的目的。但是显然,这里的NFS又引入了新的SPOF
  • 在主备NN共享元数据的过程中,也有方案通过主NN将FsEdits的内容通过与备NN建立的网络IO流,实时写入备NN,并且保证整个过程的原子性。这种方案,解决了NFS共享元数据引入的SPOF,但是主备NN之间的网络连接又会成为新的问题
  • hadoop2.x之后,Clouera提出了QJM/Qurom Journal Manager,这是一个基于Paxos算法实现的HDFS HA方案,它给出了一种较好的解决思路和方案,示意图如下:

(1)一个集群可以存在多个NN,但是一个集群中只能有一个NN正在工作。其中正在工作的NN称为Active NN;没有工作的NN为Standby NN

(2)Standby NN的主要作用就是防止单点故障,它会在主NN换掉的一瞬间接管主NN的数据

为了完成接管工作

(1)Standby NN和Active NN同时接受DN的汇报(汇报内容是Block 的位置信息)

(2)在Active NN工作的时候会产生edit 文件也就是日志文件,为了进行接管,则日志文件就不能只存在Active 的磁盘上。就需要通过共享的形式,让Standby NN也可以访问到Edit文件,可以进行相应的恢复与记录



NameNode 功能

(1)接收客户端的读写

(2)存放元数据

<think>好的,用户现在的问题是询问如何在Hadoop 3.3.0中备份配置文件并删除旧绑定的具体步骤和注意事项。我需要结合用户提供的引用内容和之前的对话历史来给出准确的回答。 首先,回顾之前的对话,用户之前询问的是如何备份并删除Hadoop中的旧绑定文件slf4j-log4j12-1.7.25.jar,我给出了详细的步骤,包括定位文件、创建备份目录、执行备份操作、验证完整性以及恢复方法。现在用户的新问题涉及到配置文件的备份和旧绑定的删除,需要将这两个操作结合起来。 接下来,用户提供的引用内容中,引用[1]提到了Hive的配置文件hive-env.sh和hive-site.xml的设置,涉及Hadoop的环境变量配置。引用[2]则展示了使用curl下载Hadoop安装包和其他文件的操作,这可能与备份时的文件传输相关,但用户的问题是关于配置文件的备份,所以可能需要参考之前的备份步骤。 用户的需求是明确的:备份Hadoop 3.3.0的配置文件并删除旧绑定。需要分步骤说明,同时注意事项部分需要涵盖权限、验证、版本控制等。可能需要注意的要点包括: 1. 配置文件的常见位置:根据之前的回答,Hadoop的配置文件通常在安装目录下的etc/hadoop子目录中,比如/export/server/hadoop-3.3.0/etc/hadoop,用户提供的引用[1]中也提到了类似路径。 2. 备份方法:可以使用cp命令备份整个目录,或者使用tar打包,确保保留文件权限和时间戳。可能需要使用sudo权限,特别是如果配置文件位于系统目录下。 3. 删除旧绑定:之前的回答中提到了删除slf4j-log4j12的jar包,用户可能需要类似的操作,但这次是删除其他旧绑定,需要确认具体文件名和路径。 4. 验证步骤:备份后检查文件完整性,删除后测试Hadoop功能是否正常,如hdfs命令、yarn等。 5. 注意事项:包括权限保留、回滚计划、版本控制、集群同步(如果是多节点环境)等。 现在需要将这些步骤整合成一个清晰的指南。可能需要参考用户提供的引用中的路径,例如HIVE_CONF_DIR和HADOOP_HOME的位置,确保备份路径正确。 同时,用户提到的删除旧绑定可能指的是之前提到的slf4j-log4j12的jar文件,或者是其他需要替换的依赖项。需要明确删除的具体文件,并确保在删除前已经正确备份,避免系统无法启动。 在注意事项部分,需要强调备份的重要性,尤其是在生产环境中,操作前进行测试,以及多节点环境的同步问题。可能还需要提到使用版本控制工具管理配置变更,方便回滚。 最后,用户可能希望了解如何自动化备份和删除过程,或者如何验证操作后的系统状态,这些都需要在回答中涵盖。此外,相关问题部分可以包括自动化脚本编写、多节点配置管理、日志分析等,帮助用户进一步学习。</think>--- ### **Hadoop 3.3.0 配置文件备份与旧绑定删除操作指南** --- #### **一、配置文件备份步骤** **1. 定位核心配置文件** Hadoop 3.3.0 主配置目录(根据引用[1]的路径示例): ```bash /export/server/hadoop-3.3.0/etc/hadoop/ ``` 关键配置文件: - `core-site.xml`(HDFS配置) - `hdfs-site.xml`(HDFS存储策略) - `yarn-site.xml`(资源管理) - `mapred-site.xml`(MapReduce配置) - `hadoop-env.sh`(环境变量) **2. 创建备份目录** 建议使用带时间戳的备份目录: ```bash mkdir -p ~/hadoop_config_backup/$(date +%Y%m%d) ``` **3. 执行备份操作** 使用`rsync`保持文件属性(需sudo权限): ```bash sudo rsync -avz --delete \ /export/server/hadoop-3.3.0/etc/hadoop/ \ ~/hadoop_config_backup/$(date +%Y%m%d)/ ``` 或使用`tar`打包压缩: ```bash sudo tar -czvf hadoop_config_$(date +%Y%m%d).tar.gz \ -C /export/server/hadoop-3.3.0/etc/hadoop . ``` --- #### **二、删除旧绑定操作** **1. 定位旧绑定文件** 常见冲突绑定文件(根据引用[1][3]示例): ```bash # SLF4J绑定冲突文件 /usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar # Hive相关旧绑定(参考引用[1]路径) /export/server/apache-hive-3.1.2-bin/lib/obsolete-lib.jar ``` **2. 安全删除流程** ```bash # 1. 备份旧文件 sudo cp -p /path/to/old-binding.jar ~/hadoop_lib_backup/ # 2. 验证新版本存在性(例如使用slf4j-api-2.x.x.jar) ls /usr/local/hadoop/share/hadoop/common/lib/slf4j-api-* # 3. 删除旧绑定 sudo rm -f /path/to/old-binding.jar ``` --- #### **三、操作后验证** **1. 配置文件验证** ```bash # 检查备份文件完整性 diff -qr /export/server/hadoop-3.3.0/etc/hadoop/ \ ~/hadoop_config_backup/$(date +%Y%m%d) ``` **2. 功能测试** ```bash # HDFS基础操作 hdfs dfs -ls / hdfs dfsadmin -report # YARN服务状态 yarn node -list # MapReduce测试(引用[2]的curl示例可辅助验证) hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 10 100 ``` --- #### **四、关键注意事项** 1. **权限保留** - 使用`-p`参数保留文件属性(如`cp -p`) - 配置文件默认权限应为`644`,属主为`hadoop:hadoop`[^1] 2. **回滚预案** ```bash # 快速恢复配置文件 sudo tar -xzvf hadoop_config_20231001.tar.gz \ -C /export/server/hadoop-3.3.0/etc/hadoop/ ``` 3. **多节点同步** 在集群环境中需同步所有节点: ```bash # 使用pdsh同步配置(需提前安装) pdsh -w node[1-10] "sudo systemctl stop hadoop" pdsh -w node[1-10] "rsync -avz master:/backup/path /target/path" ``` 4. **版本控制建议** 推荐使用Git管理配置变更: ```bash cd /export/server/hadoop-3.3.0/etc/hadoop git init git add . git commit -m "Backup config before removing old bindings" ``` --- ### **操作流程图** ``` [定位配置文件] → [创建时间戳备份] → [rsync/tar备份] ↓ [定位旧绑定] → [备份jar文件] → [删除冲突库] ↓ [验证功能] → [多节点同步] → [提交版本控制] ``` --- ### **相关问题** 1. 如何通过Ansible自动化Hadoop集群配置管理? 2. 使用Zookeeper实现Hadoop配置中心化的方法? 3. Hadoop日志文件中常见的SLF4J冲突如何排查?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值