• 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

      

     

    实验中的所有配置文件:

     https://files.cnblogs.com/files/JavaSmart/hadoop1Tohadoop2ha_conf.rar

     

  • 相关阅读:
    HYSBZ 3813 奇数国
    HYSBZ 4419 发微博
    HYSBZ 1079 着色方案
    HYSBZ 3506 排序机械臂
    HYSBZ 3224 Tyvj 1728 普通平衡树
    Unity 3D,地形属性
    nginx 的naginx 种包含include关键字
    Redis 出现NOAUTH Authentication required解决方案
    mysql 8.0出现 Public Key Retrieval is not allowed
    修改jar包里的源码时候需要注意的问题
  • 原文地址:https://www.cnblogs.com/biginfo/p/4567173.html
Copyright © 2020-2023  润新知