设为首页 加入收藏

TOP

Hadoop1.和hadoop2.的异同简洁总结
2019-04-16 00:21:09 】 浏览:63
Tags:Hadoop1. hadoop2. 异同 简洁 总结

Hadoop1.和hadoop2.的异同

1.1 namenode可以以集群的形式部署了,增强了namenode水平扩展能力和可用性。

MapReduce将JobTracker中的资源管理和任务的生命周期,更名为yarn。(ResourceManager和nodeManager)

MapReduce将JobTracker中的资源管理和任务的生命周期,更名为yarn。(ResourceManager和nodeManager)

1.2 从Hadoop整体框架来说

Hadoop1.0即第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中HDFS由一个NameNode和多个DateNode组成,MapReduce由一个JobTracker和多个 TaskTracker组成。
1.3 Hadoop2.0即第二代Hadoop为克服Hadoop1.0中的不足:针对Hadoop1.0单NameNode制约HDFS的扩展性问题,提出HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了NameNode单点故障问题;针对Hadoop1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现,即引入了资源管理框架Yarn。同时Yarn作为Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于MapReduce一种框架,也可以为其他框架使用,如Tez、Spark、Storm等

1.4 从MapReduce计算框架来讲

MapReduce1.0计算框架主要由三部分组成:编程模型、数据处理引擎和运行时环境。它的基本编程模型是将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入的数据解析成key双击查看原图alue,迭代调用map()函数处理后,再以key双击查看原图alue的形式输出到本地目录,Reduce阶段将key相同的value进行规约处理,并将最终结果写到HDFS上;它的数据处理引擎由MapTask和ReduceTask组成,分别负责Map阶段逻辑和Reduce阶段的逻辑处理;它的运行时环境由一个JobTracker和若干个TaskTracker两类服务组成,其中JobTracker负责资源管理和所有作业的控制,TaskTracker负责接收来自JobTracker的命令并执行它。
1.5 MapReducer2.0具有与MRv1相同的编程模型和数据处理引擎,唯一不同的是运行时环境。MRv2是在MRv1基础上经加工之后,运行于资源管理框架Yarn之上的计算框架MapReduce。它的运行时环境不再由JobTracker和TaskTracker等服务组成,而是变为通用资源管理系统Yarn和作业控制进程ApplicationMaster,其中Yarn负责资源管理的调度而ApplicationMaster负责作业的管理。

Hadoop1提交任务流程:

1.从client提交一个MapReduce任务,这时会在jobClient进行任务的提交,然后向JobTracker请求一个JobId。
2.此时jobTracker会为该作业任务在Hdfs上创建一个文件夹,该文件夹的名称就是JobId,并将运行任务所需要的资源文件全部复制到HDFS上,包括MapReduce打包的jar文件、配置文件和客户端计算所得的分片信息。并且jar文件默认是有10份。而输入的分片信息告诉的jobTracker应该为该任务启动几个mapr任务等。
3.JobTracker接收到作业后,将其放在一个作业队列中等待作业调度器对其进行调度,当作业调度器根据自己的算法调度到作业时,会根据输入的划分信息为每个划分创建一个map任务,并将该map任务分配给TaskTracker执行,在给TaskTracker分配任务时,是将任务复制到TaskTracker上去执行,这叫移动计算比移动计算更方便。
4.TaskTracker会每隔一段时间对JobTracker发送一次心跳信息,告诉JobTracker它依然在运行,同时心跳信息中还携带这很多信息,比如当前任务的执行进度等信息,当JobTracker收到最后一个任务的完成信息时,便把该任务设置为成功。当jobClient查询任务时,它得知任务以完成,便返回一条信息给用户。

Hadoop2提交任务流程:

1.client首先提交一个任务到ResourceManager上,这时会启动一个applicationMaster
2.ApplicationMaster向ResourceManager进行注册,并由ApplicationMaster创建一个Container,该Container是根据提交的任务生成运行该任务所需的资源抽象对象,包括CPU、硬盘、内存等等。
3.注册成功之后,ApplicationMaster向ResourceManager进行运行任务所需的资源对应的节点信息的申请,由ResourceManager根据生成的Container对任务进行调度。
4.ResourceManager将对应的节点信息发送给ApplicationMaster
5.ApplicationMaster先NodeManager进行通信,将Container复制到对应的节点上,有求对应的运行环境,之后在DataNode上启动该任务。
6.NodeManager与ResourceManager保持心跳,ResourceManager通过心跳对节点运行任务的情况进行监控。
7.应用程序运行完成后,ApplicationMaster通过RPC协议向ResourceManager注销并关闭自己。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇结合案例讲解MapReduce重要知识点.. 下一篇Hadoop-HA模式(详解)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目