Hadoop-1.2.1 升级到Hadoop-2.6.0 HA
Hadoop-1.2.1到Hadoop-2.6.0升级指南
|
作者 |
陈雪冰 |
|
修改日期 |
2015-04-24 |
|
版本 |
1.0 |
本文以hadoop-1.2.1升级到hadoop-2.6.0 ZKFC 模式,Centos 6.4, jdk 1.7.0_60环境为例。
服务器:test23,test24,test25,
原Hadoop-1.2.1的机器分布情况:
Test23: NameNode、JobTracker、SecondaryNode
Test24:Datanode,TaskTracker
Test25:Datanode,TaskTracker
升级后Hadoop-2.6.0机器分布情况:
Test23:NameNode,ResourceManager、ZKFailouControl、Zookeeper,journalNode
Test24:NameNode,ResourceManager、ZKFailouControl、Zookeeper,JournalNode、DataNode
Test25:DataNode、NodeManager、Zookeeper、JouernalNode
一 配置好Hadoop2 的HA环境
配置为zkfc模式,以确认配置文件无误,操作过程如下:
1.1 先启动所有的zookeeper
zkServer.sh start
这里是test23:2181,test24:2181,test25:2181
1.2 在所有节点上启动JournalNode:
sbin/hadoop-daemon.sh start journalnode
1.3 格式化第一个NameNode
bin/hdfs namenode –format
1.4 启动第一个的NameNode
sbin/hadoop-daemon.sh start namenode
1.5 在第二个NameNode上格式化并同步元数据
bin/hdfs namenode –bootstrapStandby
1.6 启动第二个NameNode
sbin/hadoop-daemon.sh start namenode
ZKFC操作
1.7 在第一个NameNode上执行格式化zkfc:
bin/hdfs zkfc –formatZK
运行这个命令后,会在zookeeper上创建一个/hadoop-ha/mycluster/的znode,用来存放automatic failover的数据。
1.8 启动zkfc(zookeeper failover controller)
在第一个NameNode节点上启动zkfc
sbin/hadoop-daemon.sh start zkfc
此时有一个namenode已经变为active了
第二个NameNode仍然是StandBy
1.9 在第二个NameNode节点上启动zkfc
sbin/hadoop-daemon.sh start zkfc
两个NameNode上都启动了zkfc,此时停止第一个NamNode后第二个会自动变成active状态。
1.10 启动datanode
在Namenode上启动:sbin/hadoop-daemons.sh start datanode
此时可以看到有两个DataNode:
1.11 启动yarn
在namenode上启动:sbin/start-yarn.sh
运行测试程序:
bin/hadoop fs -put ~/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar hdfs://mycluster/
JAVA客户端可以通过hdfs://mycluster/hadoop-common-2.6.0.jar方式访问资源
1.12 备份hadoop2 zkfc环境的 的配置文件
cp –r /home/hadoop2/hadoop-2.6.0/etc/hadoop /home/hadoop2/hadoop-2.6.0/etc/hadoop_zkfc
备注:
停止集群:
sbin/stop-yarn.sh
sbin/stop-dfs.sh
在每台机器上执行:zkServer.sh stop
第二次启动:
在每台机器上执行:zkServer.sh start
sbin/start-dfs.sh
sbin/start-yarn.sh
二 Hadoop1 升级准备
2.1 确保hadoop1已经是定妥升级
bin/hadoop dfsadmin -upgradeProgress status
输出:There are no upgrades in progress.
2.2 确保没有MR任务正在运行
bin/hadoop job –list
输出:0 jobs currently running
2.3 进入安全模式,并更新fsimage,重置edits文件,
bin/hadoop dfsadmin -safemode enter
bin/hadoop dfsadmin –saveNamespace
2.4 查看hdfs是否正常,并保存到文件,供升级后进行报告对比,若不正常,先使其正常。
bin/hadoop fsck /
输出The filesystem under path '/' is HEALTHY字样
保存hdfs报告到文件:
bin/hadoop fsck / >fsck_old.txt
cat fsck_old.txt
如果有错误,则可用bin/hadoop fs –setrep命令,修改文件副本系统,正常后再改回来。
参考:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html#setrep
2.5 离开安全模式
bin/hadoop dfsadmin -safemode leave
2.6 停止集群
bin/stop-all.sh
2.7 备份元数据${dfs.name.dir}目录
cp -r tmp/name tmp/name_bak
或
tar –zcvf tmp/name.tar.gz tmp/name
三 正式开始Hadoop1升级到Hadoop2
3.1 用普通的Hadoop2集群先启动集群
用 hadoop2_general里的hdfs-site.xml、core-site.xml和mapred-site.xml配置文件替换到hadoop2所有节点,一定要记得复制到所有节点,确认hdfs-site.xml里的两个路径和原hadoop1的一致:
dfs.namenode.name.dir对应dfs.name.dir的目录
dfs.datanode.data.dir对应dfs.data.dir的目录
配置好hadoo-env.sh和sleaves文件
3.2 启动NameNode和DataNode并升级,在NameNode上执行:
为了确保升级namenode过程不出错,先升级namenode数据,再升级datanode数据。
sbin/hadoop-daemon.sh start namenode -upgrade
执行后在页面上的startup-progress页看到awaiting reported blocks状态,前面都没出错,此时处于安全模式,再启动datanode,注意datanode上不要加-upgrade参数。
到各个datanode上启动:sbin/hadoop-daemon.sh start datanode
看到该项awaiting reported blocks为100% 即表示升级成功。
上面两部也可以一步完成,自测是没问题:
sbin/start-dfs.sh -upgrade
该NameNode节点会有NameNode和SecondNameNode等进程,
可以用网页test23:50070查看升级进度:
bin/hadoop dfsadmin –report 看到Decommission Status:Normal
直到安全模式自动关闭:
在这里可以看到启动过程:
3.5 接下来到hadoop2里验证:
bin/hadoop fsck /
可以文件系统是完整的。
生成新的检查报告 :bin/hadoop fsck />fsck_new.txt
对比两份报告 :diff fsck_new.txt ../hadoop-1.2.1/fsck_old.txt
3.6 停止HDFS,并复制ZKFC的配置文件到Hadoop2的所有节点,在NameNode上执行:
sbin/stop-dfs.sh
cp -r etc/hadoop_zkfc/ etc/hadoop/
同样需要确认dfs.namenode.name.dir和dfs.datanode.data.dir两个目录是否和前面的一致。
3.7 在每个节点上启动journalnode
sbin/hadoop-daemon.sh start journalnode
3.8 初始化journalnode存储目录
如果有用过,则会提示是否要重新格式化,输入”Y”回车即可,在NameNode上执行:
bin/hdfs namenode -initializeSharedEdits
如果报找不到目录,则先启动namenode再停止,然后再初始化.
sbin/hadoop-daemon.sh start namenode;sbin/hadoop-daemon.sh stop namenode;bin/hdfs namenode –initializeSharedEdits
3.9 启动NameNode和DataNode
在NameNode上执行:
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemons.sh start datanode
3.10 同步两个NameNode的元数据
将dfs.namenode.name.dir目录复制到第二个NameNode
scp -r hadoop-1.2.1/tmp/dfs/name test24:/home/hadoop2/hadoop-1.2.1/tmp/dfs
或在第二个 NameNode节点下下执行bin/hdfs namenode -bootstrapStandby 作用与直接拷贝元数据。
3.11 格式化zkfc
在第一个NameNode上执行:
hadoop-2.6.0/bin/hdfs zkfc -formatZK
3.12 重新启动hdfs:
确保所有zookeeper都已经启动
hadoop-2.6.0/sbin/stop-dfs.sh
hadoop-2.6.0/sbin/start-dfs.sh
此时升级算是完成
3.13 测试NameNode自动切换
当把test23的namenode停止后,test24的namenode自动由standBy变成active了
再次启动test23
3.14 启动yarn
运行MR测试程序 :
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 2 2
尽量多运行一些测试程序,确认环境没有问题,我们执行定妥升级:
bin/hdfs dfsadmin –finalizeUpgrade
不知道为什么升级完后UI界面还是原来的,求大侠指导,所以下面的字样也看不到。
此时看到active的NameNode上的“Upgrade in progress……” 字样已经消失。
我这里也通过更新前后的两个文件进行对比。
若执行升级可回滚:
sbin/stop-dfs.sh
sbin/start-dfs.sh -rollback
也可以将备份好的元数据还原
建议Hadoop目录部署方式
ln –s hadoop_versions/hadoop-0.20.2-cdh hadoop
实验中的所有配置文件:
http://files.cnblogs.com/files/JavaSmart/hadoop1Tohadoop2ha_conf.rar
Hadoop-1.2.1 升级到Hadoop-2.6.0 HA的更多相关文章
- hadoop hadoop-0.20.2-cdh3u4升级
[hadoop@lab02 ~]$ uname -aLinux lab02 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_ ...
- [转]《Hadoop基础教程》之初识Hadoop
原文地址:http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不 ...
- 《Hadoop基础教程》之初识Hadoop
Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...
- Hadoop安全(1)——————美团Hadoop安全实践
http://tech.meituan.com/hadoop-security-practice.html 前言 在2014年初,我们将线上使用的 Hadoop 1.0 集群切换到 Hadoop 2. ...
- [转载] 《Hadoop基础教程》之初识Hadoop
转载自http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用 ...
- Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建
目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...
- [hadoop读书笔记] 第九章 构建Hadoop集群
P322 运行datanode和tasktracker的典型机器配置(2010年) 处理器:两个四核2-2.5GHz CPU 内存:16-46GN ECC RAM 磁盘存储器:4*1TB SATA 磁 ...
- <<Hadoop基础教程》之初识Hadoop【转】
Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...
- 《Hadoop基础教程》之初识Hadoop(转载)
转载自博主:上善若水任方圆http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴 ...
- 《Hadoop基础教程》之初识Hadoop 【转】
Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...
随机推荐
- JAVA程序中SQL语句无法传递中文参数
vi /etc/my.cnf [mysqld]# The default character set that will be used when a new schema or table is# ...
- java.io.EOFException
错误代码如下: 严重: IOException while loading persisted sessions: java.io.EOFException java.io.EOFException ...
- MarkdownPad2 表格不显示处理
1.添加表格的扩展 工具 >选项 > Markdown >Markdown处理器 改为 “Markdown(扩展)”即可. 2.在设置的过程中要注册markdownpad2 邮箱: ...
- 软件架构---nop插件学习
http://www.cnblogs.com/haoxinyue/archive/2013/06/06/3105541.html http://www.cnblogs.com/aaa6818162/p ...
- ****LINUX命令(含GIT命令)个人总结
参考文章: 每日一个linux命令 http://www.cnblogs.com/peida/tag/%E6%AF%8F%E6%97%A5%E4%B8%80linux%E5%91%BD%E4%BB%A ...
- python os.walk()
os.walk()返回三个参数:os.walk(dirpath,dirnames,filenames) for dirpath,dirnames,filenames in os.walk(): 返回d ...
- PHP 二维数组根据某个字段排序
二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort 对数组的值按 ...
- 【Java EE 学习 83 上】【SpringMVC】【基本使用方法】
一.SpringMVC框架概述 什么是SpringMVC?SpringMVC是一个和Struts2差不多的东西,他们的作用和性质几乎是相同的,甚至开发效率上也差不多,但是在运行效率上SpringMVC ...
- Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备二)
接下来,我们继续分析UIlib.h文件中余下的文件,当然部分文件可能顺序错开分析,这样便于从简单到复杂的整个过程的里面,而避免一开始就出现各种不理解的地方. 1. UIManager.h:UI管理器, ...
- Datazen地图Chart自定义数据
此篇介绍如何将数据关联到Datazen地图图表.我们会将数据库中的数据映射到地图上. 首先查看下默认地图图表绑定的数据.以下是系统自带的美国地图数据,主要有两列,一列为地名,一列为度量数据.地图会根据 ...