hadoop 0.20.2版本升级到1.0.3 记录


升级分为两种,一种是集群布局不发生任何变化的,这种非常简单,十分类似安装一次新的hadoop程序;另外一种是集群布局发生变化的,这种要非常小心,因为牵扯数据安全,要让hdfs内的数据完整的迁移的新版本,所以要仔细。

两种都简单的分为几步:
1、在执行新一轮的升级前,要确保前一次升级已经定妥,用一下命令查看:

$ hadoop dfsadmin -upgradeProgress status
There are no upgrades in progress.

出现上边的提示即表示可以进行下次升级。

2、进行数据的备份,以方便升级后对照,如果有问题可发现然后回滚版本。

$ hadoop fs -lsr / > ~/namenode.log
$ hadoop fsck / >> ~/namenode.log
$ cp -r ${dfs.name.dir} ~/namenode_backup

3、使用stop-all.sh关闭hadoop集群。下载好1.0.3版本的程序进行配置,虽然conf里边多了几个新文件,但是不用管它,就按之前的配置就好,或者直接把老版本的conf里边的core、hdfs、mapred、master、slaves几个配置文件copy过来就行。别忘了配置下hadoop-env.sh,不确定这个是否有变化,还是手动配置JAVA_HOME好了。

4、把${dfs.name.dir}目录下的所有内容copy放入你新配置的路径下,这个是集群布局有变化的操作,如果没有新配置布局就不用这个操作了。单独启动新的主节点namenode的hdfs进行更新操作,命令如下:

$ ${NEW_HADOOP}/bin/start-dfs.sh -upgrade

使用如下命令进行监控,查看是否升级完成:

$ ${NEW_HADOOP}/bin/hadoop dfsadmin -upgradeProgress status

出现Upgrade for version -* has been completed.的提示即完成了升级。

5、把新版本的hadoop程序和配置文件一起分发给集群里所有的机器,根据情况看是不是需要进行个别修改,没有特别的就不用改了。修改/etc/profile中的hadoop环境变量,改成新的版本的hadoop的指向。现在使用启动集群的start-all.sh命令来启动集群就行了。

6、使用 fs -lsr 和fsck与namenode.log文件进行核对前后信息变化,如果没有问题,数据块体检也通过,那么就顺利升级完成了,这时候需要执行如下命令来最终确定升级完成和清理前版本数据:

$ hadoop dfsadmin -finalizeUpgrade
$ rm -r ~/namenode_backup ~/namenode.log

至此升级完成,不能再进行回滚操作,如果升级后发现数据不符,可以使用如下命令回滚版本:

$ stop-all.sh
$ start-dfs.sh -rollback

简单六步完成。so easy~麻麻又可以少担心一件事了。

可能出现的问题

这期间可能出现各种问题,详细的请查看hadoop的各个日志文件进行排查调试。这里详细说的一个问题就是,可能服务器本地库的一些程序版本过低,造成了一些错误,hadoop没有任何提示信息,但是在hadoop根目录下生成了类似hs_err_pid*.log的文件,这是java生成的错误文件,查看里边有类似这样的信息:

# A fatal error has been detected by the Java Runtime Environment:
#
# SIGFPE (0×8) at pc=0x0026950c, pid=30186, tid=3074190256

————— T H R E A D —————
Current thread (0x0805a800): JavaThread “main” [_thread_in_native, id=29049, stack(0xb7376000,0xb73c7000)]

siginfo:si_signo=SIGFPE: si_errno=0, si_code=1 (FPE_INTDIV), si_addr=0x0026950c

查看apache邮件列表的说法是:

this is a process error (JVM error), not program error. Check if your memory is working correctly (memtest).

说是内存有问题,(这你妹,这次坑爹了,不过也许这种错误也有内存出错造成的情况)。重新装了java,检查了机器的内存,发现都咩问题。而且配置的集群里只有两台出现这种情况,猜测可能是新版本的hadoop需要某些基础服务缺失或版本低了。然后找到了这篇这篇,和琥珀春秋帮助找到的这一篇。简单的来说,解决办法如下几个步骤:
1、下载安装ant,配置环境变量如:

export ANT_HOME=/opt/apache-ant-1.8.0
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$ANT_HOME/bin:$PATH

2、在hadoop根目录下执行命令:

$ source /etc/profile
$ ant compile-native

3、把生成的目录build里边的native/Linux*** 里边的内容整体移到hadoop根目录下,菊花符号代表可能根据各个服务器有所不同。

4、然后配置有问题的hadoop的core-site.xml添加如下属性:

<property>
<name>hadoop.native.lib</name>
<value>false</value>
</property>

5、关闭集群,重启集群。OK,搞定!

另外一种解决办法是升级服务器,正好我的集群升级是两台机器出现这样的情况,所以一台使用的是这个方法,另外一台就提交给运维还是什么的部门去升级服务器了,等结果。然后重新添加hadoop1.0.3试试是否还有这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值