zoukankan      html  css  js  c++  java
  • hadoop1.0.4升级到hadoop2.2 具体流程步骤

     hadoop1.x 升级到hadoop2.2
    本文參考了博客:http://blog.csdn.net/ajax_jquery/article/details/27311671,对一些地方做了改动。并具体做了说明
    HDFS升级,是hadoop集群升级到2.0的关键,而hdfs升级,最重要的是namenode的升级。
    首先声明:hadoop1.x不能直接升级到 HA 模式下,namenode是不能升级成功的。这里也借助hadoop2.x兼容hadoop1.x的配置文件来升级。
    假设直接升级hadoop2.x HA模式可能会出现例如以下错误
    FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
    org.apache.hadoop.HadoopIllegalArgumentException: Invalid startup option. Cannot perform DFS upgrade with HA enabled
    以下是升级hadoop2.x HA 模式的流程,详细为什么要选用HA而不採用HA+Federation 的方式,不是这里要说的问题
    先在hadoop1.x模式下将namenode的元数据升级:
    step 1: 做下saveNamespace操作,停掉集群。并备份下 HDFS 的 Metadata,操作例如以下:
         1.1 namenode进入safe mode状态
                $ bin/hadoop dfsadmin -safemode enter
         1.2  运行saveNamespace操作
                $ bin/hadoop dfsadmin -saveNamespace
         1.3 离开安全模式
                $ bin/hadoop dfsadmin -safemode leave
         1.4 stop 集群
         1.5 备份 dfs.name.dir 以下的元数据
                cp -r name /data/zhoulei/bak.name.20140916
    step2:
          2.1 将集群中hadoop环境换成2.2(注意:这是配置文件必须选用hadoop1.x中/conf/ 中的配置文件。

    否则会报上面的错误),运行例如以下升级namenode命令:      
                hadoop-daemon.sh start namenode -upgrade
    step3:
         namenode升级完毕后,将datanode启动,datanode会自己主动升级到与namenode同样版本号
                hadoop-daemons.sh start datanode  此时注意,要启动全部的datanode, 不然也不会出现多大问题,可是其他节点的datanode 却不会自己主动升级。
         3.1 关闭集群
               sbin/stop-dfs.sh
         3.2 将配置文件升级为2的配置
               此时将配置文件所有替换为hadoop2.2的配置文件
         3.3 将升级完的namenode元数据一些參数改动一下,改成ha模式:
                这时须要将journalnode的元文件的VERSION文件的參数改动。改成与namenode的元数据同样或者使用命令:
        I、    先启动 journalnode:sbin/hadoop-daemon.sh start journalnode 此时要注意,全部的Journalnode 都要启动否则以下步骤报错
        II、   给namenode安装journalnode共享文件夹bin/hdfs namenode -initializeSharedEdits 、
                假设上面一步没有所有启动,则出现例如以下错误    

    14/09/17 10:13:06 ERROR namenode.NameNode: Could not initialize shared edits dirorg.apache.hadoop.hdfs.qjournal.client.QuorumException: Unable to check if JNs are ready for formatting. 1 successful responses
        III、  启动namenode:sbin/hadoop-daemon.sh start namenode
        IV、 启动datanode:sbin/hadoop-daemons.sh start datanode   启动全部datanode 节点,或者逐个节点分别启动
    此时注意 并没有 active namenode 或是 standby 节点的差别,仅仅有一个节点。
         3.4 将active namenode的 {dfs.namenode.name.dir} 文件夹的内容拷贝到 standby namenode的{dfs.namenode.name.dir} 文件夹下然后启动 standby namenode
                或者使用命令:
                在另外一个 namenode 节点下下运行bin/hdfs namenode -bootstrapStandby   作用与直接拷贝元数据类似
         3.5 格式化ZK(在hadoop01上运行就可以):bin/hdfs zkfc -formatZK
         3.6 又一次启动hdfs:sbin/start-dfs.sh(一定要又一次启动。否则会出现两个namenode同一时候都是standby的状态)
               此时发现即使重新启动dfs 可是两个namnode 都为standby 的状态,这是由于 zkfc 并没有启动,此时我们须要做的两个动作
               1)分别为每一个zookeeper 节点 启动 QuorumPeerMain
                   zookeeper-3.4.5/bin/zkServer.sh start
                2)  在主节点启动zkfc(不一定是主节点)
                     sbin/hadoop-daemon.sh start zkfc
                此时再看两个namenode 守护进程的状态 就会出现一个 active ,一个standby 的状态。

         3.7 升级完成后,namenode和datanode的${ dfs.data.dir}/文件夹下会多出一个文件夹previous/。这是升级之前数据的备份。
    假设确定升级成功。能够使用:bin/hadoop dfsadmin -finalizeUpgrade(要在active的namenode上运行) 终于提交升级
  • 相关阅读:
    八大排序算法——插入排序(动图演示 思路分析 实例代码java 复杂度分析)
    八大排序算法——冒泡排序(动图演示 思路分析 实例代码java 复杂度分析)
    八大排序算法——选择排序(动图演示 思路分析 实例代码Java 复杂度分析)
    蓝桥杯 算法训练 素因子去重 (java)
    蓝桥杯 每周一练 第一周(3n+1问题)
    第八届蓝桥杯程序设计大赛 国赛 填空题第一题 平方十位数
    拼多多 2018 校招编程题 六一儿童节
    泛型的实质
    JAVA 反射之Method
    JAVA反射之 Field (属性)
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7105352.html
Copyright © 2011-2022 走看看