Hello 大家好,我是stefan,今天来和大家分享下如何将Hadoop1.x迁移至Hadoop2.x。这篇博文提供了将Hadoop MapReduce应用从Hadoop1.x迁移到Hadoop2.x的方法。
在2.x的版本中,apache将resource management剥离出来集成到Hadoop YARN里了,目的在于将application management框架分开使得MapReduce依然是一个纯粹的分布式计算框架。
一般情况下,由于早版本的MapReduce在新的框架(YARN)设计时被尽量重用了,因此YARN对MRv1保持向下兼容。不过由于一些改进和代码重构,少部分API借口提供了向后兼容。
1、对二进制程序的兼容性
首先,我们要确保使用旧mapred的API的应用程序二进制兼容性。也就是说用MRv1构建的应用不需要重新编译,就可以跑在YARN上。只需要通过配置来将应用程序部署到Hadoop2.x的集群上。
2、源代码兼容性
我们不能完全确保二进制程序兼容性由于上一个版本到现在YARN版本已经改进了很多地方。但是我们可以确保用YARN版本的MapReduce重新编译的程序是稳定的。所以大家最好用新的api重新编译一下自己的程序。
3、不支持的东西
MRAdmin在YARN版中已经被删除,因为mradmin命令不存在了。YARN中用rmadmin中的命令替代了他。如果直接使用这个类的应用不管是二进制程序还是源代码都会出错。
4、MRv1用户和YARN用户之间的平衡
可惜完美的兼容是不存在的,保持对MRv1的二进制程序的兼容会导致早起MRv2的二进制程序的不兼容问题,特别是0.23版本的用户(尽量不要使用这个版本咯)。对于MapReduce的api我们兼容MRv1的应用程序,因为用户群比较广泛,下表是Hadoop0.23中不兼容api的列表:
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 | Return type changes from String toTaskID |
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[] toString[] |
org.apache.hadoop.mapreduce.filecache.DistributedCache#getFileTimestamps | Return type changes from long[] toString[] |
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 fromo.a.h.mapred.TaskCompletionEvent[] too.a.h.mapreduce.TaskCompletionEvent[] |
注意事项:如果想在YARN上运行Hadoop-examples-1.x.x.jar(之前版本的示例代码),那么可以去MapReduce文件夹下运行hadoop-mapreduce-examples-2.x.x.jar。
默认下Hadoop 框架的jar包在classpath中出现在用户jar包的前面,使得2.x.x的jar包会始终被获取到。用户需要将hadoop-mapreduce-examples-2.x.x.jar从集群中的所有节点的classpath中去除掉。或者我们可以设置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讲解就到这里,转载请注明出处:http://blog.csdn.net/guoshenglong11/article/details/22728223,欢迎大家关注我的博客。
Ubuntu 12.04单机版环境中搭建hadoop详细教程,在Ubuntu下创建hadoop用户组和用,创建hadoop用户。
在mac os上安装hadoop的文章不多,本文安装环境的操作系统是 MAC OS X 10.7 Lion,共分7步,注意第三个配置在OS X上最好进行配置,否则会报错“Unable to load realm info from SCDynamicStore”。
Nutch采用一个MR对爬取下来的文档进行清洗和封装成一个action列表。Nutch会将封装好的数据采用基于http的POST的方法发送一个请求数据包给solr的服务器,solr.commit();这个方法在前面一篇文章中解释有些偏差,solr的整个事务都是在solr服务器端的,这跟以前的的事务有所
、默认项目名称为MapReduceTools,然后在项目MapReduceTools中新建lib目录,先将hadoop下的hadoop-core-1.0.4.jar重命名为hadoop.core.jar,并把hadoop.core.jar、及其lib目录下的commons-cli-1.2.jar、commons-lang-2.4.jar、commons-configuration-1.6.jar、jackson-m
SAP特别设立了一个“大数据”合作伙伴理事会。该理事会致力于进行合作创新,研发基于SAP实时数据平台和Hadoop的新产品解决方案,探索新应用和架构
【聚焦搜索,数智采购】2021第一届百度爱采购数智大会即将于5月28日在上海盛大开启!
本次大会上,紫晶存储董事、总经理钟国裕作为公司代表,与中国—东盟信息港签署合作协议
XEUS统一存储已成功承载宣武医院PACS系统近5年的历史数据迁移,为支持各业务科室蓬勃扩张的数据增量和访问、调用乃至分析需求奠定了坚实基础。
大兆科技全方面展示大兆科技在医疗信息化建设中数据存储系统方面取得的成就。
双方相信,通过本次合作,能够使双方进一步提升技术实力、提升产品品质及服务质量,为客户创造更大价值。