首先先看一下文档:
http://dongxicheng.org/mapreduce-nextgen/hadoop-upgrade-to-version-2/ http://dongxicheng.org/mapreduce-nextgen/hadoop-upgrade-in-version-1/ http://bupt04406.iteye.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 -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.(责任编辑:IT) |