APP下载

剖析Hadoop之YARN架构

2019-01-22

福建质量管理 2019年2期
关键词:全文检索子项目离线

(中国计量大学 浙江 杭州 310000)

Hadoop是一个开源的、可靠的、可扩展的分布式并行计算框架。它起源于Hadoop之父Doug Cutting开创的开源软件Lucene,Lucene是Doug Cutting 用java语言实现的于Google类似的全文搜索功能的项目,它提供了全文检索引擎的架构,包括完成的查询引擎和索引引擎。

2001年底Lucene成为了apache软件基金会Jakarta的一个子项目,它的目的在于为软件开发人员提供一个简单易用的工具包以方便的在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。对于大数据的场景,Lucene面对着和Google相同的困难。迫使Doug Cutting 学习和模仿Google解决这些问题的办法。Nutch项目由此诞生。

2003年-2004年,Google公开了部分GFS和MapReduce思想的细节,以此为基础Doug Cutting等人用了2年的业余时间实现了DFS和MapReduce机制,Nutch性能飙升。这里还要提一下Google的另一篇论文BigTable,依据这篇论文的思想,衍生出了Hbase,可以说,Google的三篇论文GFS、MapReduce、BigTable是Hadoop的思想起源。

Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce 和 Nutch Distributed File System(NDFS)分别被纳入称为Hadoop的项目中。至于Hadoop这个项目名称,来源于Doug Cutting孩子的玩具大象。

Hadoop已经成为实现云计算的事实标准开源软件,包含数十个具有强大生命力的子项目(现在说的Hadoop已经不单单指示Hadoop这个项目,更多的是指Hadoop的生态)以及能在数千节点上运行,处理数据量和排序时间不断打破世界纪录,这是目前Hadoop达到的高度。

Hadoop项目中主要包括以下四个模块:

Hadoop Common:为其他Hadoop模块提供基础设施。

Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。

Hadoop MapReduce:一个分布式的离线并行计算框架。

Hadoop YARN:一个新的MapRecude框架,任务调度和资源管理。

本文重点介绍了YARN架构,简单了介绍了MapReduce的运行机制

YARN(Yet Another Resource Negotiator,另一种资源协调者),负责hadoop集群中的资源调度与管理。

YARN服务的功能:ResourceManager、NodeMangaer、ApplicationMaster、Conitainer

ReousrceManager:

(1)处理客户端请求(2)启动/监控ApplicationMaster(3)监控NodeManager(4)资源分配与调度

NodeManager:

(1)单个节点上的资源管理(2)处理来自ResourceManager的命令(3)处理来自ApplicationMaster的命令

ApplicationMaster:

(1)数据切分(2)为应用程序申请资源,并分配给内部任务(3)任务监控与容错

Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息

从来自Apache官网的YARN架构图可知,ReousrceManager和NodeManager也是一个主从架构,ReousrceManager是整个集群的资源管理进程,NodeManager是单台服务器上的节点管理者

这里先提一下hadoop中的另一个架构:MapReduce 分布式离线并行计算框架。MapReduce运行在Yarn上。MapReduce的核心思想就是分而治之,Map执行分操作,此阶段并行处理输入数据,Reduce执行合操作此阶段对Map结果进行汇总,suffle连接Map和Reduce两个阶段 。 MapReduce仅适合离线批处理,具有很好的容错性和扩展性,适合简单的批处理任务,但它的缺点也很明显,它的启动的开销过大而且执行过程中频繁的对数据进行读写,因此效率低下(受IO影响较大)。下面是MapReduce在Yarn上的运行过程

客户端向ResourceManager提交任务(1)ResourceManager向每一个NodeMangager分配一个 ApplicationsMaster,ApplicationsMaster的作用就是对NodeManager中单个作业的资源管理和任务监控(2),NodeManager收到请求后会计算出处理任务所需要的CPU、内存等资源,然后向ResourceManager发出资源请求(3),ResourceManager响应请求调度资源,NodeManager获取到计算机资源后将这些资源封装在Container内(4),Container内的MR APP Mstr(5)开始执行到map操作和Reducec操作(6),执行完毕后(7)向ResourceManager释放申请的资源(8)。这里也许有人会问,每个服务器节点不都是有属于自己的cpu、内存资源吗为什么还需要向集群申请呢。这就是YARN的作用之一,YARN将整个集群的计算机资源集中到一起交由ResourceManager统一管理(CPU、内存等,但不包括磁盘资源,磁盘由HDFS管理)。

猜你喜欢

全文检索子项目离线
服务进程中消费者对子项目顺序的遵从性研究
异步电机离线参数辨识方法
活性炭为中心综合项目总体布局
浅谈ATC离线基础数据的准备
FTGS轨道电路离线测试平台开发
离线富集-HPLC法同时测定氨咖黄敏胶囊中5种合成色素
基于案例的电子技术实践教学内容与教学设备的设计
Oracle数据库全文检索性能研究
全文检索引擎Lucene系统模型与应用研究
全文检索引擎技术在电子病历中的应用