Hadoop迁移Namenode
来源:互联网 发布:mysql insert触发器 编辑:程序博客网 时间:2024/05/18 03:38
一.前提及方案
操作版本:社区版 Hadoop-1.0.3,其他版本不保证
之前HBase没有考虑压缩,经过一段时间的研究和测试,打算在HBase中全面采用snappy压缩库。但是在节点上配置snappy时,发现其要求glibc版本在2.5+,而当前系统CentOS-4.8的glibc是2.3.4,CentOS-4.8不支持独立升级glibc到2.5+,所以只能整个集群升级系统到CentOS5。逐台升级,这就牵扯到Namenode节点也要升级,这就需要在不丢失数据的情况下将Namenode迁移到其他服务器,特在此记录操作流程,供后续参考。
因为集群初始时没有设置SecondaryNamenode,一开始考虑觉得还挺困难,但是后来仔细一想,其实Hadoop集群是“机器不相关”(或者IP不相关?)的,无论是那台机器做Namenode,只要配置指向该节点,且该节点文件路径与原Namenode一致,则其他Datanode节点就应该会很傻很天真的以为它就是Namenode节点。
二. edits和fsimage介绍
集群NameNode把文件系统(HDFS)的变化追加保存到日志文件edits中。
当NameNode启动时,会从镜像文件 fsimage 中读取HDFS的状态,并且把edits文件中记录的操作应用到fsimage,也就是合并到fsimage中去。合并后更新fsimage的HDFS状态,创建一个新的edits文件来记录文件系统的变化。
与此相关的主要文件存储位置在hdfs-site.xml中设置 :
<property>
<name>dfs.name.dir</name>
<value>/data1/hadoopdata1/dfs/name,/data1/hadoopdata2/dfs/name</value>
</property>
三. 具体操作步骤
1. 停掉Hadoop及相关集群
2. 备份dfs.name.dir所指向的目录及文件
3. 修改$HADOOP_HOME/conf/下配置文件
•修改core-site.xml中fs.default.name,将原hostname改为新主机hostname
•修改mapred-site.xml中mapred.job.tracker,将原hostname改为新主机hostname
•检查slaves文件和master文件(因为很多时候是从原集群中剥离一台机器,所以要特别注意是否有遗漏)
•修改其他相关配置文件的配置(如有HBase,需要修改hbase-site.xml中hbase.rootdir等,所以尽量仔细检查各个配置文件)
4. 建立新Namenode到其自身及其他Datanode节点间的互信
5. 将第2步中备份的文件拷贝到新Namenode节点,且按照原Namenode文件结构放置文件
6. 将第3步中修改后的配置文件分发到其他Datanode节点
7. 启动HDFS,查看NameNode、SecondaryNameNode和各个DataNode状态是否正常
8. 启动MapReduce,查看TaskTracker、ZooKeeper、RegionServer状态是否存在异常
相关阅读: Hive迁移Hadoop namenode时遇到的问题 http://www.linuxidc.com/Linux/2012-07/66770.htm
http://www.linuxidc.com/Linux/2013-08/88956.htm
- Hadoop迁移namenode
- Hadoop迁移Namenode
- Hadoop NameNode迁移
- hadoop迁移namenode
- NameNode迁移
- hive迁移hadoop namenode时遇到的问题
- hive迁移hadoop namenode时遇到的问题
- hadoop namenode
- hadoop-namenode
- 【Hadoop】NameNode
- NameNode热迁移方案
- Hadoop:NameNode和Secondary NameNode
- 如何在不影响hadoop集群正常运行的情况下迁移主控节点[namenode]
- hadoop2.5集群迁移namenode
- Hadoop NameNode 结构简介
- HDFS------hadoop namenode -format
- Hadoop namenode HA方案
- hadoop 无法启动 namenode
- HashMap<K, V>泛型类
- 循环赛赛程安排---递归思想
- 八数码 poj1077 Eight(A*、IDA*)
- Eclipse中,消除JavaScript报的警告
- share memory realm does not exist
- Hadoop迁移Namenode
- oracle中的trim函数
- ORA-01830、ORA-01849
- c++中的private/protect/public & virtual
- 关于javascript 中用window.open()打开多个窗口的问题
- C#中Dictionary、ArrayList、Hashtable和数组的区别是什么?
- C#如何为winform程序打包发布应用
- 直接显示缩略图
- oracle acfs 基本知识。