Hadoop从入门到精通之 如何从Hadoop1.x转到Hadoop2.x

Hello 大家好,我是stefan,今天来和大家分享下如何将Hadoop1.x迁移至Hadoop2.x。这篇博文提供了将Hadoop MapReduce应用从Hadoop1.x迁移到Hadoop2.x的方法。

&">nbsp;

在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 FunctionIncompatibility Issueorg.apache.hadoop.util.ProgramDriver#driveReturn type changes from void to intorg.apache.hadoop.mapred.jobcontrol.Job#getMapredJobIDReturn type changes from String to JobIDorg.apache.hadoop.mapred.TaskReport#getTaskIdReturn type changes from String toTaskIDorg.apache.hadoop.mapred.
ClusterStatus#UNINITIALIZED_MEMORY_VALUEData type changes from long to intorg.apache.hadoop.mapreduce.filecache.DistributedCache#getArchiveTimestampsReturn type changes from long[] toString[]org.apache.hadoop.mapreduce.filecache.DistributedCache#getFileTimestampsReturn type changes from long[] toString[]org.apache.hadoop.mapreduce.Job#failTaskReturn type changes from void to booleanorg.apache.hadoop.mapreduce.Job#killTaskReturn type changes from void to booleanorg.apache.hadoop.mapreduce.Job#getTaskCompletionEventsReturn 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,欢迎大家关注我的博客。

时间: 2024-10-24 01:07:07

Hadoop从入门到精通之 如何从Hadoop1.x转到Hadoop2.x的相关文章

干货|大数据Hadoop快速入门教程

1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效.可伸缩的特点. Hadoop的核心是YARN,HDFS,Mapreduce,常用模块架构如下 2.HDFS 源自谷歌的GFS论文,发表于2013年10月,HDFS是GFS的克隆版,HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障 HDFS简化了文件一致性

Hadoop快速入门

目的 这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等. 先决条件支持平台GNU/Linux是产品开发和运行的平台. Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证. Win32平台是作为开发平台支持的.由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持. 所需软件 Linux和Windows所需软件包括

给hadoop新手的一封信:Hadoop入门自学及对就业的帮助

晚上整理邮箱,找到了一封之前网友的关于hadoop学习的来信以及我的回信,我想应该对初学者会有帮助,就贴出来给大家看看! 提问: 你好: 我是今年年初的时候就像学习hadoop来着,但是中间有段时间去学习了手机android开发.耽误一段时间. 最近这不才刚跟你联系上.现在我还是有很多疑问. 1.我学完,做两个例子基本达到入门程度.找工作容易嘛? 2.我刚进公司的话是直接加入到hadoop的项目吗? 2.工作待遇工资怎么样.我做了快两年的java web开发. 3.我现在还上着班,学习只能说是周

Hadoop:pig 安装及入门示例

pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据. 一.安装 a) 下载 从官网http://pig.apache.org下载最新版本(目前是0.14.0版本),最新版本可以兼容hadop 0.x /1.x / 2.x版本,直接解压到某个目录即可. 注:下面是几个国内的镜像站点 http://mirrors.cnnic.cn/apache/pig/ http://mirror.bit.edu.cn/apache/pig/ http://mi

Hadoop社区版搭建

1.环境准备 1.1 硬件配置 设备名 参数 数量 6台 系统 centos6.5 内存 64G 硬盘 320T/台 CPU 8核/台 1.2 软件版本 Hadoop-2.x 下载地址 JDK1.7  下载地址   至此搭建Hadoop集群的条件准备OK了.   2.创建Hadoop用户 在管理Hadoop集群时,不推荐使用root用户去操作,我们可以通知运维,叫他创建一个hadoop用户去专门用于维护和管理集群. useradd hadoop passwd hadoop 同时通知运维给hado

集群-Hadoop 如何将结果分配到指定的机器上去?

问题描述 Hadoop 如何将结果分配到指定的机器上去? 如题,比如reduce结果有10个block,集群有3台slaves,我想把part-00000到part-00003放在一台机器上,把part-00004到part-00006放到一台机器上,剩下的放到另外一台机器上,求大神解决,多谢!!!!!!!!! 解决方案 http://bbs.csdn.net/topics/391927191 解决方案二: Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架,借助于

Ubuntu上搭建Hadoop环境(伪分布式)

首先要了解一下Hadoop的运行模式: 单机模式(standalone)        单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为空.当配置文件为空时,Hadoop会完全运行在本地.因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程.该模式主要用于开发调试MapReduce程序的应用逻辑. 伪分布模式(Pseudo-Distributed

一张图测试你的Hadoop能力-Hadoop能力测试图谱

1.引言 看到一张图,关于Hadoop技术框架的图,基本上涉及到Hadoop当前应用的主要领域,感觉可以作为测试Hadoop开发人员当前能力和水平的比较好的一个工具,特此分享给大家.如果你能够明白说出每一个技术框架的功能.应用场景和设计架构,那么恭喜你,已经正式步入Hadoop应用开发的世界了. 2.Hadoop菜鸟入门测试   3.评分标准 第一档 菜鸟初级(门外汉) 1-7  不及格 第二档 菜鸟8+X段,每答对一个,加一段 8-10 及格 第三档 见习Hadoop工程师 11-13 第四档

Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

25.集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有NameNode / DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager 25.1.2服务器准备 本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本: ü Vmware 11.