youlp 发表于 2015-11-11 13:19:15

Hadoop HDFS 升级到2.0 笔记

首先先看一下文档:  http://dongxicheng.org/mapreduce-nextgen/hadoop-upgrade-to-version-2/
  http://dongxicheng.org/mapreduce-nextgen/hadoop-upgrade-in-version-1/
  http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-Installation-Guide/cdh4ig_topic_6_3.html
  http://bupt04406.iyunv.com/blog/1920585
  http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-site/HDFSHighAvailabilityWithQJM.html


  


  HDFS升级,是hadoop集群升级到2.0的关键,而hdfs升级,最重要的是namenode的升级。


  首先声明:在 HA 模式下,namenode是不能升级的!


  

2013-10-25 16:28:24,669 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  
  so,先使用非ha模式将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 stop 集群
  1.4 备份 dfs.name.dir 下面的元数据

step2:
   将集群环境换成2.0的:      
      hadoop-daemon.sh start namenode -upgrade

   

step3:


   namenode升级完成后,将datanode启动,datanode会自动升级到与namenode相同版本


   关闭集群
   将升级完的namenode元数据一些参数修改一下,改成ha模式:
   这时需要将journalnode的元文件的VERSION文件的参数修改,改成与namenode的元数据相同

   或者使用 命令:
   bin/hdfs namenode-initializeSharedEdits


   启动 journalnode
   启动namenode
   启动datanode
   hdfs haadmin -transitionToActive nn1
   将active namenode的 {dfs.namenode.name.dir} 目录的内容复制到 standby namenode的{dfs.namenode.name.dir} 目录下
   然后 启动 standby namenode

   或者使用命令:hdfs namenode -bootstrapStandby    作用与直接拷贝元数据类似



    * 否则,会出大问题*
   2013-10-28 17:36:13,818 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.io.IOException: There appears to be a gap in the edit log.We expected txid 2, but got txid 7.
https://issues.apache.org/jira/i#browse/HDFS-5058


  
  



版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Hadoop HDFS 升级到2.0 笔记