理论上,在Hadoop 1.x上开发的Mapreduce程序可以在Hadoop 2.x上面运行,Hadoop2.x类库对Hadoop1.x程序的兼容性主要体现在以下几点:
二进制兼容:利用mapred API开发以及编译程序可以直接在Hadoop 2.x运行,不需要重新编译;
源码兼容:利用mapreduce API开发的程序, 需要在Hadoop 2.x上重新编译才能运行;
不兼容部分:mradmin从Hadoop 2.x上移除了,如果某程序中用到了这个类,则该程序将不兼容Hadoop 2.x平台,但是可以用rmadmin代替mradmin。
其他不兼容的部分:
Problematic Function | Incompatibility Issue |
org.apache.hadoop.util.ProgramDriver#drive | 返回类型从void变成int |
org.apache.hadoop.mapred.jobcontrol.Job#getMapredJobID | 返回类型从String变成JobID |
org.apache.hadoop.mapred.TaskReport#getTaskId | 返回类型从String变成TaskID |
org.apache.hadoop.mapred.ClusterStatus #UNINITIALIZED_MEMORY_VALUE | 返回类型从long变成int |
org.apache.hadoop.mapreduce.filecache.DistributedCach e#getArchiveTimestamps | 返回类型从long[] 变成String[] |
org.apache.hadoop.mapreduce.filecache.DistributedCache #getFileTimestamps | 返回类型从long[] 变成String[] |
org.apache.hadoop.mapreduce.Job#failTask | 返回类型从void变成boolean |
org.apache.hadoop.mapreduce.Job#killTask | 返回类型从void变成boolean |
org.apache.hadoop.mapreduce.Job#getTaskCompletionEvents | 返回类型从o.a.h.mapred.TaskCompletionEvent[] 变成o.a.h.mapreduce.TaskCompletionEvent[] |
关于升级程序需要的依赖包可以参见本博客《Hadoop1.x程序升级到Hadoop2.x需要的依赖库》
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Mapreduce程序:从Hadoop1.x升级Hadoop2.x】(https://www.iteblog.com/archives/854.html)
初来乍到,支持下