在2013年的Hadoop峰会上,YARN成为了一个热点话题。三年的酝酿,YARN本质上是Hadoop的操作系统,突破了MapReduce框架的性能瓶颈。
MapReduce是在HDFS下操纵数据的主要机制。对于处理和分析海量数据是一个很好的选择,但并不适合其它类型的数据分析。三年前,Hortonworks的创始人兼架构师ArunMurthy开始着手重新架构Hadoop,以使其成为一个更通用的大数据平台。
ArunMurthy表示,着手构建Hadoop2.0时,我们希望从根本上重新设计Hadoop的架构,达到可以在Hadoop上运行多个应用程序并处理相关数据集的目的。这样一来,多种类型的应用程序都可以高效、可控地运行在同一个集群上。这是以Hadoop2.0为基础的ApacheYARN之所以能够诞生的真正原因。通过YARN管理集群的资源请求,Hadoop从一个单一应用程序系统升级成为一个多应用程序的操作系统。
而Murthy所说的其它类型的应用程序包括:机器学习,图像分析,流分析和互动查询功能等。一旦YARN全面投入使用,开发者将能通过YARN“操作系统”将存储在HDFS中的数据用于这些应用程序。Hive就是由Facebook开发的HDFS上层的SQL类型的数据仓库工具,但是后台的数据处理还要通过MapReduce。Hive很消耗资源,会影响其它同时运行的作业。其它Hadoop相关的数据分析子项目也都是类似的情况。
YARN是一个真正的Hadoop资源管理器,它允许多个应用程序同时、高效地运行在一个的集群上。有了YARN,Hadoop将是一个真正的多应用程序平台,可服务于整个企业。Murthy表示通过YARN可以以一种前所未有的方式与数据交互,YARN已经被用于Hortonworks的数据平台,Hadoop和YARN的组合是企业大数据平台致胜的关键。
MapReduce2.0——YARN的基本架构
MapReduce还在Hadoop0.23时已经经历了一次大规模更新,新版本的MapReduce2.0被称为YARN或MRv2。YARN的基本思想是将JobTracker的两个主要功能分离,主要方法是创建一个全局的ResourceManager和若干个针对应用程序的ApplicationMaster。这里的应用程序是指传统的MapReduce作业或作业的DAG。
ResourceManager和每个slave结点的NodeManager构成了数据计算框架。ResourceManager负责最终将资源分配到各个应用程序。NodeManager是每台机器的框架代理,负责管理容器,监控它们的资源使用情况,同时向ResourceManager/Scheduler汇报。针对各个应用程序的ApplicationMaster实际上是一个详细的框架库,它结合从ResourceManager获得的资源和NodeManager协同工作来运行和监控任务。ApplicationMaster同时负责向Scheduler请求适当的资源容器,跟踪它们的使用状态并监控其进展。
ResourceManager中有两个主要组件:Scheduler和ApplicationsManager。Scheduler负责给应用程序分配资源。Scheduler从某种意义上说是一种纯粹的调度,它不监控和跟踪应用程序的状态,另外它也不负责重启应用程序或者硬件故障造成的失败。Scheduler根据应用程序的资源需求执行调度,这些需求基于一个抽象的资源概念Container,包括内存、CPU、硬盘和网络等。ApplicationsManager负责接收作业提交,将应用程序分配给具体的ApplicationMaster,并负责重启失败的ApplicationMaster。YARN在接口上兼容于此前的稳定版本(Hadoop0.20.205),这意味着以前的MapReduce作业重新编译后就可以在YARN下运行。