阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache Hadoop 2.2.0 MapReduce1.x向2.x迁移

98次阅读
没有评论

共计 2597 个字符,预计需要花费 7 分钟才能阅读完成。

在 Hadoop 的 2.x 中我们引入了一个资源管理器,一个分布式应用的管理框架,同时 MRv2 仍然是一个纯净的分布式计算框架。

总的来讲,以前的 MR 应用 (MRv1) 仍然支持不需要做任何修改。因此 MRv2 仍然大部分支持 MRv1 的应用,不过仍然需要代码改进和重构,一些 api 将被不推荐使用。

余下部分将会讨论 MRv2 的向后兼容能力。

————————————– 分割线 ————————————–

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

————————————– 分割线 ————————————–

二进制兼容

首先基于旧 mapred api 的二进制程序兼容意思是说这些应用程序是基于 MRv1 的 api 编译构建的,那么他们不需要做任何修改就可以在 MRv2 上运行。仅仅需要指明 hadoop2.x 的配置文件。

源文件兼容

我们不能确定基于 mapreduce 构建的二进制文件是否能兼容,毕竟这些 api 基于 MRv1 变化很大。不过我们可以肯定的是基于 mapreduce 从新构建二进制文件是兼容的,换句话说用户可以基于 mapreduce 重新构建他们的二进制文件,一个需要注意的不兼容地方是 Counter 和 CounterGroup。

不支持

MRAdmin 在 MRv2 中已经被删除。因为 mradmin 命令已经不存在了。他被 rmadmin 替换掉了,我们不支持二进制直接使用了此类。

MRv1 用户和 MRv2 早期用户权衡

不幸的是保持 MRv1 二进制兼容问题会导致 MRv2 早期用户 (hadoop 0.23 用户) 二进制不兼容问题。对于 mapred api 我们选择兼容 MRv1 应用,因为他们的用户比较庞大。对于 mapreduce api 用户没有采用 hadoop 0.23 的应用我们仍然让他们兼容 MRv1 的应用,如下罗列的是 MapReduce api 不兼容 hadoop 0.23:

Problematic FunctionIncompatibility Issue
org.apache.hadoop.util.ProgramDriver#driveReturn type changes from void to int
org.apache.hadoop.mapred.jobcontrol.Job#getMapredJobIDReturn type changes from String to JobID
org.apache.hadoop.mapred.TaskReport#getTaskIdReturn type changes from String to TaskID
org.apache.hadoop.mapred.ClusterStatus#UNINITIALIZED_MEMORY_VALUEData type changes from long to int
org.apache.hadoop.mapreduce.filecache.DistributedCache#getArchiveTimestampsReturn type changes from long[] to String[]
org.apache.hadoop.mapreduce.filecache.DistributedCache#getFileTimestampsReturn type changes from long[] to String[]
org.apache.hadoop.mapreduce.Job#failTaskReturn type changes from void to boolean
org.apache.hadoop.mapreduce.Job#killTaskReturn type changes from void to boolean
org.apache.hadoop.mapreduce.Job#getTaskCompletionEventsReturn type changes from o.a.h.mapred.TaskCompletionEvent[] too.a.h.mapreduce.TaskCompletionEvent[]

蓄意

用户在 YARN 上运行 hadoop-examples-1.x.x.jar,需要注意的是 hadoop -jar hadoop-examples-1.x.x.jar 仍然采用的是 hadoop-mapreduce-examples-2.x.x.jar,他跟其他 MRv2 安装在一起。默认 hadoop 的 jar 优先于用户的 jar 加载也就是说 2.x.x 的会优先执行。用户需要在所有的 hadoop 节点上移除 hadoop-mapreduce-examples-2.x.x.jar。用户需要设置 HADOOP_USER_CLASSPATH_FIRST=true and HADOOP_CLASSPATH=…:hadoop-examples-1.x.x.jar 去执行他们想执行的例子,同时需要在 mapred-site.xml 配置文件中加入如下信息以便 YARN 加载此 jar:

<property>
 <name>mapreduce.job.user.classpath.first</name>
 <value>true</value>
</property

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计2597字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中