从2012年8月开始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一项子工程。自此Apache Hadoop由下面四个子工程组成:
概括来说,Hadoop
YARN的目的是使得Hadoop数据处理能力超越MapReduce。众所周知,Hadoop HDFS是Hadoop的数据存储层,Hadoop
MapReduce是数据处理层。然而,MapReduce已经不能满足今天广泛的数据处理需求,如实时/准实时计算,图计算等。而Hadoop
YARN提供了一个更加通用的资源管理和分布式应用框架。在这个框架上,用户可以根据自己需求,实现定制化的数据处理应用。而Hadoop
MapReduce也是YARN上的一个应用。我们将会看到MPI,图处理,在线服务等(例如Spark,Storm,HBase)都会和Hadoop MapReduce一样成为YARN上的应用。下面将分别介绍传统的Hadoop
MapReduce以及新一代Hadoop
YARN架构。
由此可见,hadoop2.0吸收目前工业界整个生态圈的现有成就,并且希望能够支持更多的运算模型。但是生态系统总是有演化的过程,随着各种新物种的出现,总会有一天打破现有的生态平衡的。hadoop虽然提供了MPI希望能够支持更多的计算类型,但是从目前看,HBase等都是自称一系的。
原 MapReduce 程序的流程及设计思路:
可以看得出原来的 map-reduce 架构是简单明了的,在最初推出的几年,也得到了众多的成功案例,获得业界广泛的支持和肯定,但随着分布式系统集群的规模和其工作负荷的增长,原框架的问题逐渐浮出水面,主要的问题集中如下:
整个hadoop2.0中,namenode上jobtracker的功能被拆分成resourceManager和ApplicationMaster以及客户端上面的NodeManager来统一负责。而AppMst又可有有多个,一个AppMst对应一种计算框架的类型,由AppMst来监控任务的运行状态,以及失败重启。NameNode是YARN每个节点上面运行的agent,负责集群中每个计算节点,看看hortonworks的官方描述:The NodeManager (NM) is YARN’s per-node agent, and takes care of the individual compute nodes in a Hadoop cluster.
从上面介绍可以看得出,YARN最大的特性就是jobtracker被切分成resourceManager和appMst,而appMst这一层相当于对整个hadoop做了切分跟抽象,在文件系统之上增加了一个应用程序层,从而能够支持扩展。本质上看,appMst实现的逻辑其实用户的代码,不应当与系统代码的nodeManger和resourceManager混在一起,有了AppMst后继hadoop就可以支持各种流式运算和各种非MR的运算了。这个看起来貌似很简单的改变,能够极大减轻MASTER节点的压力和运算逻辑,目前业界hadoop系统有三千台的集群的,有五千台集群的,再高的没有谁详细的介绍过,据说YARN能支持的节点数目是远远超过hadoop1.0的。resourceManager类似于jt,而nodeManager类似于tt,而appMst则是新生事物。
YARN还支持webHDFS,通过restfull api访问和操作hdfs,这也算是赶上了时代的步伐,将大大方便跨语言对hadoop的调用。
悲催的是,没有看到关于MASTER单节点的解决方案,整个YARN对resourceManager的依赖像对jt和nn一样强烈,当resourceManager失效的时候,对整个系统来说是灾难。这已经被工业界屡次实践的一个缺陷了,很多实时切换的方案,但是未见到YARN官方的介绍。
最后YY一下,号称是HADOOP2.0的产品开发来自这家公司http://hortonworks.com/,完美的商业与技术结合的产品。
原文:http://www.cnblogs.com/laodageblog/p/3536442.html