hadoop里面的MapReduce和yarn的运行原理

hadoop 1.xx与hadoop2.xx的区别特别大。特别是HDFS和mapreduce都有了很大的改变。hadoop2.xx具有高容错,有效的减少了由于单点故障所产生的影响,并且可用性和速度都有很大的提升。
hadoop2.xx的主要变更:
1)、HDFS的NameNode 可以以集群的方式进行部署,这就是高可用集群,即HA-hadoop集群。
2)、MapReduce里面的JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Resource Negotiator)。
下面就详细介绍一下:
一、hadoop 1.xx中的MapReduce
hadoop1的MapReduce的执行图如下:
hadoop里面的MapReduce和yarn的运行原理
多个客户端向主机发送请求,JobTracker(资源和任务的调度管理)将任务和资源分配给从机里面的TaskTracker里面,同时TaskTracker过了一定的时间会发送一个心跳,来反映是否活着。这就造成了JobTracker的压力过大。
出现的问题:
1.单节点,主要时指JobTracker进程
2.节点压力大
3.只能运行MapReduce框架
hadoop里面的MapReduce和yarn的运行原理

hadoop里面的MapReduce和yarn的运行原理
详见:http://www.cnblogs.com/sy270321/p/4395916.html
二、yarn架构
yarn:Yet Another Resource Negotiator另一种资源管理。
主要概念是将资源管理的功能和作业调度/监控分离成独立的守护进程。主要有全局的ResourceManager和每个应用程序的ApplicationMaster进程,一个应用程序可以是一个单一的进程和多进程的新组件。
ResourceManager和NodeManager构成了计算机数据框架。
ResourceManager是在系统中的所有应用程序中仲裁资源的最终权威。NodeManager是每台机器框架代理负责容器,监测他们的资源使用(cpu、内存、磁盘、网络)和报告同一个的ResourceManager /Scheduler调度程序。
实际上,每个应用程序的ApplicationMaster是一个特定于框架的库,它的任务是与来自ResourceManager的资源进行协商,并与NodeManager(s)一起工作,以执行和监视任务。
hadoop里面的MapReduce和yarn的运行原理
yarn架构:
master/slaver结构(主从结构):一个主机(ResourceManager)多个从机(NodeManager)
ResourceManager作用:
在整个集群中只有一个ResourceManager处于工作状态(即使在高可用的Hadoop集群里面),负责资源的统一管理和调度。
1)处理客户端发送的请求(启动或者杀死应用程序)
2)启动/监控ApplicationMaster,ApplicationMaster挂了,RM将会在另一个节点上启动AM
3)RM要监控NodeManager
4)整个集群资源的分配和调用
ResourceManager有两个主要组件:Scheduler(调度程序)和ApplicationsManager。
Scheduler调度器负责将资源分配给各种运行的应用程序,这些应用程序受到熟悉的容量、队列等约束。调度器是纯粹的调度器,因为它没有对应用程序的状态进行监视或跟踪。此外它不能保证重新启动失败或者是由于应用程序失败或硬件故障的任务。
调度器根据应用程序的资源需求执行调度功能;它基于一个资源容器的抽象概念,它包含了诸如内存、cpu、磁盘、网络等元素。
调度器有一个可插拔的策略,负责在各种队列、应用程序等之间划分集群资源。
ApplicationsManager负责接受工作提交,协商第一个容器执行应用程序特定的ApplicationMaster,并提供重新启动ApplicationMaster容器失败的服务.
每个应用程序的ApplicationMaster有责任从调度程序中协商适当的资源容器,跟踪它们的状态并监控进度。
hadoop2.xx里面的MapReduce保持API兼容性与以前的hadoop1.xx稳定版本。
这意味着所有MapReduce作业都应该在仅仅重新编译的情况下,在YARN上面保持不变.
YARN还支持通过预订系统进行资源保留的概念,该组件允许用户指定资源的时间过长和时间限制(例如:,最后期限),以及储备资源以确保可以预见的重要工作的执行。
保留区系统跟踪资源的超时时间,执行预订控制,并动态地指示底层调度程序以确保保留已满。