注: 升级步骤不涉及HA和federation。如何在Hadoop2.0上部署HA和federation,可以查看另外两篇文章。这是1.0升级2.0的简单升级配置步骤。实践了一下,挺顺利的,HDFS1.0平稳升级2.0,不存在任何不兼容的问题,而且数据没有任何丢失。并且由升级回滚机制,如果升级失败可以确保回滚到之前的环境,很大地提升了稳定性。MR升级中的兼容性问题,下面有简单的概括,具体还要后续使用了才能更明确。而且本文介绍的升级是非跨版本的升级,直接从hadoop 0.20.2到hadoop 2.2.0,如果要从cdh到社区的2版本等升级方式略有不同,仅供参考。
HDFS升级
1) 首先,停止正在运行的hadoop. Bin/stop-all.sh
2) 备份HDFS的元数据和配置信息。也就是<dfs.name.dir>目录下的文件,和conf目录下的文件。
3) 下载Hadoop 2.2.0,解压到与1.0版本同级目录下;
4) 用1.0的conf下的配置文件覆盖2.0/etc/hadoop/下的配置文件。包括: core-site.xml, hdfs-site.xml和mapred-site.xml
5) 修改hadoop2.0的etc/hadoop下的配置文件:
Core-site.xml中添加: <property>
<name>io.native.lib.available</name>
<value>true</value>
</property>
这是配置hadoop的native lib本地库,从本地加载库能提升作业执行的效率。
mapred-site.xml中添加:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Hadoop-env.sh中添加JAVA_HOME变量配置;
Yarn.xml中添加:
<property>
<name>yarn.resourcemanager.address</name>
<value>master ip:8080</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master ip:8081</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value><span style="font-family: 'Microsoft YaHei';">master ip</span><span style="font-family: 'Microsoft YaHei';">:8082</value> </span>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
这些是升级2.0需要配置的变量,其他变量可以沿用1.0中的配置。
6) 执行升级命令: sbin/start-dfs.sh –upgrade
检查升级是否完成: 首先查看logs下的日志记录,然后在dfs.data.dir目录下查看,产生了一个previous文件夹,里面包含原有的元数据信息。表示升级完成。
7) 提交升级: bin/hdfs dfsadmin –finalizeUpgrade 。然后在文件系统中查看文件和块等的完整性。
MapReduce升级
mapreduce不需要做升级,直接在hadoop2.0的安装目录下配置新的MapReduce的参数,然后启动MapReduce 2.0就可以。1) 上面的配置信息中,已经把MapReduce相关的都配置完了。
2) Sbin/yarn-daemon.sh start resourcemanager
3) Sbin/yarn-daemon.sh start nodemanager
4) 检验启动是否成功: localhost:50070检验HDFS, localhost:8088检验yarn。