介绍
此文档为用户把mr应用从1.x迁移到2.x上提供说明。
在hadoop的2.x中我们引入了一个资源管理器,一个分布式应用的管理框架,同时MRv2仍然是一个纯净的分布式计算框架。
总的来讲,以前的MR应用(MRv1)仍然支持不需要做任何修改。因此MRv2仍然大部分支持MRv1的应用,不过仍然需要代码改进和重构,一些api将被不推荐使用。
余下部分将会讨论MRv2的向后兼容能力。
二进制兼容
首先基于旧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 Function | Incompatibility Issue |
org.apache.hadoop.util.ProgramDriver#drive | Return type changes from?void?to?int |
org.apache.hadoop.mapred.jobcontrol.Job#getMapredJobID | Return type changes from?String?to?JobID |
org.apache.hadoop.mapred.TaskReport#getTaskId |
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|