美文网首页
hadoop1.x升级2.6记录

hadoop1.x升级2.6记录

作者: 崇贺 | 来源:发表于2016-04-07 11:43 被阅读0次

    现有版本:hadoop-1.1.2

    升级版本:hadoop-2.6.0

    hadoop官方地址

    系统版本:CentOS release 6.7 (Final)

    JDK版本:java version "1.7.0_21" 64-Bit


    Maven版本:apache-maven-3.3.3

    Ant版本:apache-ant-1.9.6

    其他版本:findbugs-3.0.1    protobuf-2.5.0

    使用上面的软件是为了编译hadoop 2.6.0 (因为一些本地包官方版本是无法检测到的,需要重新编译)

    具体编译流程与软件下载请自行寻找

    Maven命令  mvn package -DskipTests -Pdist,native –Dtar


    编译后(hadoop-2.6)

    先在1.x hadoop环境进行备份操作

    shell>hadoop dfsadmin -safemode enter

    进入安全模式

    shell>hadoop dfsadmin -saveNamespace

    进行Namespace备份

    shell>hadoop dfsadmin -safemode leave

    离开安全模式

    停止整个1.x集群

    1.x安装目录下的conf文件夹下

    hdfs-site.xml这个文件里面的

    这个参数用于确定将HDFS文件系统的元信息保存在什么目录下

    要把这两个元数据都进行备份,这个备份非常重要,用于以后回滚或者提交

    shell> cp -fr /download/hadoop/name1 /download/hadoop/name1.bak

    shell> cp -fr /download/hadoop/name2 /download/hadoop/name2.bak

    在这里把两个元数据都已经备份,大家有什么就备份什么,按照你们的配置来进行备份

    自此hadoop1.x环境的备份与集群停止工作都已经结束,如果顺利这也是它最后一次服役

    这时在/etc/profile的环境变量,该下线的都下线,但是暂时不要用hadoop2的命令来替换1的环境变量配置,不然容易造成一些未知错误(别忘了让环境变量生效:))

    现在把1.x安装目录下conf文件夹里的配置文件全部拷贝到hadoop2.6配置目录下$HADOOP2_HOME/etc/hadoop/

    升级启动时必须使用1.x的配置文件,一点都不要改动,hadoop2.x的HA、HA+Federation这些配置文件你可以先配置好,但是名字不能与1.x的配置文件名字相同,最好做成core-site.xml.2这种形式,以便区分

    在hadoop2.6的sbin文件夹下执行如下命令

    shell> ./hadoop-daemon.sh start namenode -upgrade

    这时要看日志输出是否有错误,如果有错误就细致看错误,源码的准备也是有必要的,因为升级的文章很少,大家写的也都是成功流程,但是中间失败的过程与错误的分享较少,所以这需要你通过丰富的经验通过源码来解决错误问题

    我在升级时遇到了一个错误

    是因为我们公司hadoop的权限划分有些问题,错误我没记录,但是我通过源码找到了问题所在,在core-site.xml(1.x配置文件,2.6时也需要添加这个配置)添加了如下配置

    这个是否需要,需要看执行上面的升级命令有无报错(而且要看具体错误)


    如果启动无错误,命令执行结束,那么你的namenode已经升级完成了

    这时要升级datanode,升级datanode较为简单,启动它就好了……(2.6环境sbin文件夹下)

    shell> ./hadoop-daemons.sh start datanode

    此时是否启动了全部datanode,取决于你的slaves配置也就是说从1.x拷贝到2.6 conf下的slaves这个文件,如果是跟1.x一致的主机群(注意没启动的节点不会进行升级),那么上面的命令已经启动了全部datanode节点,datanode会随着namenode去升级

    此时如果全部启动后(自行确认namenode与datanode是否全部启动)

    停止集群 (下面该替换2.6的配置文件操作了)

    2.6环境sbin文件夹下

    shell> ./stop-dfs.sh

    将所有配置文件全部升级为2.6是否选择HA、HA+Federation请自行决定,相关配置请参照官方文档与网络文章

    如果使用HA模式journalnode需要同步元数据(这里使用命令同步,不建议修改文件方式)

    在2.6(namenode active节点)安装目录下的bin执行命令

    shell> ./hdfs namenode –initializeSharedEdits

    启动各个journalnode

    这里我是在各个datanode下单独启动的,启动命令(2.6安装目录sbin目录下)

    shell> ./hadoop-daemon.sh start journalnode

    同步namenode元数据信息到HA节点 (2.6安装目录bin目录下)

    shell> ./hdfs namenode -bootstrapStandby

    启动namenode(namenode active节点)

    shell> ./hadoop-daemon.sh start namenode

    启动datanode(namenode active节点)

    shell> ./hadoop-daemons.shstart datanode

    全部启动后现在是没有active节点的

    需要手动激活,命令如下(namenode active节点2.6安装目录bin目录下):

    shell> ./hdfs haadmin -transitionToActive nn1

    此时集群已经全部启动,第一次启动时datanode需要检查数据,速度较慢,需要一定耐心

    升级完毕后,namenode和datanode的${dfs.data.dir}/目录下会多出一个文件夹previous/,这是升级之前数据的备份。

    如果确定升级成功,可以使用(namenode active节点2.6安装目录bin目录下):hadoop dfsadmin -finalizeUpgrade(要在active的namenode上执行 可以在集群启动时使用该命令) 最终提交升级(最终升级后无法回滚请确认后再执行)

    确认好升级后,可以把环境变量给修改为升级后的环境,方便使用各种命令

    记录一点心得,欢迎大家交流mail:zhaoshuo5550@vip.qq.com

    相关文章

      网友评论

          本文标题:hadoop1.x升级2.6记录

          本文链接:https://www.haomeiwen.com/subject/isimlttx.html