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的更多相关文章

  1. 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_ ...

  2. [转]《Hadoop基础教程》之初识Hadoop

    原文地址:http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不 ...

  3. 《Hadoop基础教程》之初识Hadoop

    Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...

  4. Hadoop安全(1)——————美团Hadoop安全实践

    http://tech.meituan.com/hadoop-security-practice.html 前言 在2014年初,我们将线上使用的 Hadoop 1.0 集群切换到 Hadoop 2. ...

  5. [转载] 《Hadoop基础教程》之初识Hadoop

    转载自http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用 ...

  6. 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 ...

  7. [hadoop读书笔记] 第九章 构建Hadoop集群

    P322 运行datanode和tasktracker的典型机器配置(2010年) 处理器:两个四核2-2.5GHz CPU 内存:16-46GN ECC RAM 磁盘存储器:4*1TB SATA 磁 ...

  8. <<Hadoop基础教程》之初识Hadoop【转】

    Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...

  9. 《Hadoop基础教程》之初识Hadoop(转载)

    转载自博主:上善若水任方圆http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴 ...

  10. 《Hadoop基础教程》之初识Hadoop 【转】

    Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...

随机推荐

  1. jsonp是什么【转载自JavaScript微信公众号】

    转自 http://mp.weixin.qq.com/s/xNnKAeLv6sO0T-IvP2AUlQ          JavaScript微信公众号 一.JSONP的诞生 首先,因为ajax无法跨 ...

  2. FileStream读写文件【StreamWriter 和 StreamReader】

    FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能.这是因为FileStream类 ...

  3. Java中的private protected public和default的区别

    转至:http://blog.sina.com.cn/s/blog_74c571240101jaf5.html    类内部  本包  子类 外部包  public    √  √  √  √ pro ...

  4. 解决Jquery mobile点击较长文本body的时候Header和footer会渐入渐出的问题

         在做一个Phonegap+Jqm工程的时候,出现了如题的问题,相信很多人都遇到过Jquerymobile点击body时候header和footer会闪烁的显示和隐藏问题,fixed却并不能真 ...

  5. RxJava 学习笔记(一)

    最近Android6.0的权限问题,要把之前的APP进行改造,用到了RxPermission框架!之前了解过RXJAVA,但是由于之前项目一直没有使用这个框架,所以也就一直搁置了.正好Rxpermis ...

  6. Oracle获取干净的建表DDL语句,不含其它存储、表空间、段属性

    早上一个同事资讯怎么获取到建表语句而且是不带存储那种SQL.Oracle自己提供了一个函数DBMS_METADATA.GET_DDL,但是获取到的建表语句含有存储.表空间.以及一些其他段的属性.如图: ...

  7. 【学习篇:他山之石,把玉攻】jquery实现调用webservice

    1.webservice端 using System; using System.Collections.Generic; using System.Web; using System.Web.Ser ...

  8. Eclipse 调试Bug之使用断点的七大技巧

    原文链接:http://xiaohuafyle.iteye.com/blog/1705494 调试竟然有这么多技巧,亏我以前竟不知道...   Eclipse这个开发工具为我们调试bug提供了非常便利 ...

  9. Python 学习第二十天 django知识

    一,django models 1,django ORM获取后台数据的方式,总共有三种 (1)v1 = models.Business.objects.all()   返回值为QuerySet类型,内 ...

  10. 解决关键SSL安全问题和漏洞

    解决关键SSL安全问题和漏洞 SSL(安全套接字层)逐渐被大家所重视,但是最不能忽视的也是SSL得漏洞,随着SSL技术的发展,新的漏洞也就出现了,下面小编就为大家介绍简单七步教你如何解决关键SSL安全 ...