火花是什么意思(什么是纱线)
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

导读:HBase没有资源什么都做不了。Spark占用资源却无事可做。纱,了解一下吧
作者:朱凯
来源:华章科技
01概述
随着Hadoop生态系统的发展,开源社区中出现了各种技术组件。有用于构建数据仓库的Hive,基于内存的计算框架Spark,还有我们之前介绍过的NoSQL数据库HBase。这些技术组件的出现极大地丰富了大数据的生态系统,但同时也引发了一些新的问题。作为大数据的底层支撑平台,同时部署Hive、HBase、Spark等各种技术组件是非常常见的。这些为大数据场景设计的技术组件可以说个个都是消耗资源的大户,这些资源包括服务器的CPU和内存。
通常,这些技术组件都有自己的资源调度系统来管理任务的资源分配,但当它们部署在一起时,问题就出现了。这时,会出现两种情况,第一种情况是某些组件可能申请不到服务器资源。
例如,一台32G内存的服务器同时部署了HBase和Spark,HBase的RegionServer启动时占用20GB内存。此时Spark在开始执行某项任务时也需要使用20GB的内存,但是发现没有足够的内存资源可以使用。因为从各个组件独立的角度来看,他们都认为自己可以使用100%的服务器资源,但服务器资源总量如此之大,不可能同时满足所有组件的需求。
第二种是可能会出现资源分配不合理的情况,导致整体资源利用率低。我们也以刚才的场景为例。Spark启动了一个任务申请30GB内存,但实际上它的程序逻辑并不需要使用那么多资源。这就导致了HBase没有资源什么都做不了的情况,而Spark占用了资源却无事可做。
为了解决类似的问题,我们需要一种通用的资源调度框架,对整个集群的资源进行统筹管理。
YARN是一个优秀的集群资源调度框架。YARN是YetAnotherResourceNegotiator的缩写,是Hadoop的第二代集群资源调度框架。
解决了Hadoop第一代集群资源调度框架可靠性差、扩展性差等一系列问题。同时,YARN完全独立于MapReduce,从专门支持MapReduce的任务调度框架升级为支持各种应用类型的通用集群资源调度框架。
在除了MapReduce之外,Spark、Hive等一系列服务都可以作为应用运行在YARN之上,YARN统一用于整个集群的宏观调度和资源分配,如图2-12所示。
图2-12纱线的逻辑结构
02资源模型和Container
YARN抽象地封装了服务器资源,这就是使用Container对象代表申请资源的基本单元。.这些资源包括资源名称(服务器名称、机架等。),内存和CPU。YARN通过容器机制隔离服务器资源。每个应用程序都可以通过ApplicationMaster向ResourceManager申请资源。当ApplicationMaster向ResourceManager申请资源时,ResourceManager返回的资源用容器数表示。例如,一个Spark计算任务需要五个容器资源。
03ResourceManager
ResourceManager是一个全局的资源管理器,负责整个系统的资源管理和分配以保证整个集群的高效运行。会根据容量、队列和其他限制(比如给每个队列分配一定数量的资源,最多执行一定数量的作业)将系统中的资源分配给正在运行的应用。ResourceManager只负责根据各个应用的资源请求分配资源,不参与任何与具体应用相关的工作,比如监控或跟踪应用的执行状态,或者重启应用执行失败或硬件故障导致的失败任务,这些都是由与应用相关的ApplicationMaster完成的。资源分配单元使用我们刚刚介绍的容器对象。
此外,ResourceManager还支持可插拔的调度器插件,以支持各种资源调度策略,例如使用公平调度或容量调度。
04ApplicationMaster
每个想要在YARN上运行的应用必须具有相应的ApplicationMaster实现,并且应用将把内部任务调度逻辑和监控移交给它们自己的ApplicationMaster实现类。ApplicationMaster是YARN的一个创新设计,纱通过这种机制将自己打造成了一个扩展性很强的通用资源调度框架,因为它允许用户开发自己的ApplicationMaster实现。
ApplicationMaster进程主要负责在运行过程中与ResourceManager进行通信,从而申请执行任务。
需要的资源,在申请到资源之后再进一步执行自身内部的调度任务。同时ApplicationMaster也负责监控自己运行的内部任务状态,在任务失败的时候重新为任务申请相应资源并重启任务。ApplicationMaster通常作为一个应用的主进程,主要用来扮演拆分子任务、汇总结果数据这类的总体调度,比如Spark的Driver进程。而真正的执行程序业务逻辑的进程是在NodeManager进程上执行的。
05NodeManager
NodeManager是每个服务器节点上资源管理器,负责管理自己所处服务器Containers的整个生命周期。
在YARN上运行的应用最终的逻辑执行程序(比如Spark的task、MapReduce的job)都会在NodeManager的Container中运行,可以说NodeManager是YARN计算节点的代理,因为ResourceManager只会将任务分配到启动了NodeManager进程的服务器。
当NodeManager进程启动的时候它会向ResourceManager进行注册,并定时汇报自己所在服务器的资源使用情况和Container运行状态,同时它也接受并处理来自ApplicationMaster的Container启动和停止等各种请求。
06单一集群架构
通过上面的介绍我们不难发现,ResourceManager、NodeManager和Container组件都不关心具体的应用程序或任务的类型,只有ApplicationMaster才是应用类型相关的。
YARN通过使用开放ApplicationMaster的集成方式,允许第三方应用框架便捷的和YARN进行集成。这才有了像MapReduceOnYARN、StormOnYARN、SparkOnYARN和TezOnYARN等众多第三方应用集成方案的出现。
通过这种资源共享的单一集群架构,我们在企业内部可以实现服务器资源真正的共享使用,以达到降低技术集成成本和增强资源整体利用率的目的。
07工作流程
接下来我们简单看一下YARN的整个工作过程,如图2-13所示。
用户向YARN中提交应用程序。ResourceManager为该应用程找到一个可用的NodeManager并分配第一个Container,然后在这个Container中启动应用程序的ApplicationMaster。ApplicationMaster向ResourceManager进行注册,这样用户就可以通过ResourceManager查看应用程序的运行状态并对任务进行监控。ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。ApplicationMaster申请到资源后与对应的NodeManager通信,要求它启动Container并为任务设置好运行环境。应用程序的任务开始在启动的Container中运行,各个任务向ApplicationMaster汇报自己的状态和进度,以便ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。应用在运行的过程中,客户端通过轮询的方式主动与ApplicationMaster通信以获得应用的运行状态、执行进度等信息。应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。▲图2-13YARN的工作流程
08使用场景
基于YARN扩展性强、可靠性强、支持多用户和支持多应用的特点,它非常适合于支撑企业内部构建统一的资源共享型大数据平台。借助YARN我们可以真正实现通过一套资源调度系统集成所有应用组件的单一大集群架构。
1.Spark任务调度
Spark是一款分布式内存计算框架,Spark可以将自身的任务调度部分委托YARN进行管理,从而实现集群资源高效整合与利用。
2.MapReduce任务调度
同样的,MapReduce任务的整个生命周期都可以借助YARN进行管理,包括任务的分配、资源的调度,等等。
关于作者:朱凯,资深大数据专家和架构师,拥有10年IT从业经验,精通大数据、Java、Node.JS等技术。对大数据领域的主流技术与解决方案有深入研究,擅长分布式系统的架构设计与整合。曾主导过多款大数据平台级产品的规划设计与研发工作,一线实战经验丰富。
本文摘编自《企业级大数据平台构建:架构与实现》,经出版方授权发布。
延伸阅读《企业级大数据平台构建:架构与实现》
资深大数据专家/一线架构师20000小时实际工作经验总结。以横向视角出发,拉通Hadoop体系技术栈,手把手教你快速构建一个真实可用、安全可靠的企业级大数据平台。
本文主要介绍了关于火花是什么意思(什么是纱线)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/101571.html