您的位置:首页 > 运维架构

Hadoop-2.2.0中文文档—— 从Hadoop 1.x 迁移至 Hadoop 2.x

2014-05-12 08:07 393 查看

简介

本文档对从 Apache Hadoop 1.x 迁移他们的Apache Hadoop MapReduce 应用到
Apache Hadoop 2.x 的用户提供了一些信息。
在 Apache Hadoop 2.x 中,我们已经把资源管理功能放入 分布式应用管理框架 的Apache
Hadoop YARN,而 Apache Hadoop MapReduce (亦称 MRv2) 保持为一个纯分布式计算框架。
总之,之前的 MapReduce 运行时 (亦称 MRv1) 已经被重用并且不会有重大功能放在其上(?)。因此,MRv2 可以确保与MRv1 应用之间的兼容性。然而,由于一些改进和代码重构,一些API已经导致后向不兼容。
本页的剩余部分将讨论在Apache Hadoop MapReduce 2.x (MRv2)中我们支持的后向兼容的范围和级别。

Binary 兼容性

首先,我们确保对使用旧的mapred的应用二进制兼容。这意味着使用 MRv1 mapred API
创建的应用不用重新编译就可直接在YARN上运行,仅仅需要通过配置把它们指向一个 Apache Hadoop 2.x 集群。

Source 兼容性

我们不能确保使用mapreduce API的应用的二进制兼容,因为这些API从MRv1起已经改变了很多。然而,我们确保对mapreduce API
的兼容性。换句话说,用户可以用MRv2的mapreduce API 重新编译他们的应用。一个显著的二进制不兼容是 Counter 和 CounterGroup。

不支持的

在MRv2 中 MRAdmin 已经被删除了,因为 
mradmin
 命令不存在了。他们已经被 
rmadmin 中的命令代替了。我们不支持直接使用这个类的二进制或源码。


MRv1 用户和早期的 MRv2 适应者间的折中

不幸的是,维持对MRv1应用的二进制兼容可能导致MRv2的早期适应者的二进制不兼容问题,特别是Hadoop
0.23 用户。对于 mapred APIs, 有一大批的用户,我们已经选择兼容MRv1应用。对于 mapreduce APIs,
如果他们不显示地使用 Hadoop 0.23 应用,我们仍然是他们与MRv1应用兼容。下面是与Hadoop 0.23不兼容的 MapReduce APIs 列表。
问题函数不兼容问题
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
Return type changes from 
String
 to 
TaskID
org.apache.hadoop.mapred.ClusterStatus#UNINITIALIZED_MEMORY_VALUE
Data type changes from 
long
 to 
int
org.apache.hadoop.mapreduce.filecache.DistributedCache#getArchiveTimestamps
Return type changes from 
long[]
 to 
String[]
org.apache.hadoop.mapreduce.filecache.DistributedCache#getFileTimestamps
Return type changes from 
long[]
 to 
String[]
org.apache.hadoop.mapreduce.Job#failTask
Return type changes from 
void
 to 
boolean
org.apache.hadoop.mapreduce.Job#killTask
Return type changes from 
void
 to 
boolean
org.apache.hadoop.mapreduce.Job#getTaskCompletionEvents
Return type changes from 
o.a.h.mapred.TaskCompletionEvent[]
 to
o.a.h.mapreduce.TaskCompletionEvent[]

Malicious

对于将要在YARN上试用 
hadoop-examples-1.x.x.jar
 的用户,请注意 
hadoop
-jar hadoop-examples-1.x.x.jar 还是会使用
 
hadoop-mapreduce-examples-2.x.x.jar
,
其与其他的 MRv2 jars 一同安装. 默认地, Hadoop 框架包在classpath中出现在用户的jar之前,以便2.x.x 包中的类仍会被选中。用户在集群中的所有节点的classpath中应该删除 
hadoop-mapreduce-examples-2.x.x.jar
 。否则,用户应该设置 
HADOOP_USER_CLASSPATH_FIRST=true
 并且
HADOOP_CLASSPATH=...:hadoop-examples-1.x.x.jar
 去执行他们的目标示例jar,
还要在 
mapred-site.xml
 中添加配置,使得 YARN 容器进程会调用这个jar包。
    <property>

<name>mapreduce.job.user.classpath.first</name>
<value>true</value>
</property>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop 文档