YARN与MapReduce1的区别
1.组成对比
?MapReduce1中,两类守护进程控制着作业执行过程:一个JobTracker和一个或多个TaskTracker。JobTracker通过调度TaskTracker上运行的任务来协调所有运行在系统上的作业。TaskTracker在运行任务的同时将运行进度报告发送给JobTracker,JobTracker由此记录每项作业任务的整体进度情况。JobTracker同时负责作业调度和任务进度监控。 ?Hadoop对JobTracker赋予的功能过多造成负载过重。
?YARN则将JobTracker的职责交由不同的实体担负:资源管理器和应用程序管理。资源管理器与具体应用程序无关,负责整个集群的资源管理。应用程序管理只负责管理一个作业,直接与应用程序相关。资源管理器由Resource Manager负责,其专管资源管理和调度。应用程序管理由Application Master负责,其负责与具体应用程序相关的任务切分、任务调度和容错等。 ?MapReduce1中JobTracker也负责存储已完成作业的作业历史。而在YARN中,与之等价的角色是时间轴服务器,主要用于存储应用历史。YARN中与TaskTracker等价的角色是节点管理器。
MapReduce1 | YARN |
---|
JobTracker | 资源管理器、应用程序管理、时间轴服务器 | TaskTracker | 节点管理器 | Slot | 容器 |
2.扩展性对比
?与MapReduce1相比,YARN可以在更大规模的集群上运行。当节点数达到4000,任务数达到40000时,MapReduce1会遇到可扩展性瓶颈,因为JobTracker必须同时管理作业和任务。而YARN利用资源管理器和应用程序管理分离的架构优点克服了这个局限性,可以扩展到面向将近10000个节点和100000个任务。因为每个作业都对应一个专门的Application Master,该管理进程在应用的持续期间运行。
3.利用率对比
?MapReduce1中,每个TaskTracker都配置有若干长度的slot,这些slot是静态分配的,在配置时候就被划分为map slot和reduce slot。一个map slot仅能用于运行一个map任务,一个reduce slot仅能用于运行一个reduce任务。
?而在YARN中,一个节点管理器管理一个资源池,而不是指定的固定数目的slot。YARN上运行的MapReduce不会出现由于集群中仅有map slot可用导致reduce任务必须等待的情况。如果能够获得运行任务的资源,应用就会正常进行。应用可以按需请求资源,而不是请求一个不可分割的、对于特定的任务而言可能会太大或太小的slot。
4.多租户
?YARN可以向MapReduce以外的其他类型的分布式应用开放Hadoop,MapReduce仅是许多YARN应用中的一个。用户甚至可以在同一个YARN集群上运行不同版本的MapReduce,这使得升级MapReduce的过程更好管理。
|