设为首页 收藏本站
查看: 1666|回复: 0

[经验分享] hadoop 0.20.2版本升级到1.0.3 记录

[复制链接]

尚未签到

发表于 2016-12-12 09:17:22 | 显示全部楼层 |阅读模式
  
by 三江小渡
  
升级分为两种,一种是集群布局不发生任何变化的,这种非常简单,十分类似安装一次新的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试试是否还有这个问题。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-313052-1-1.html 上篇帖子: 搭建Hadoop 2.2.0 和 HBase 0.94.14 集成 下篇帖子: Hadoop MapReduce 学习笔记(八) MapReduce实现类似SQL的order by/排序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表