Yarn简介
为克服Hadoop1.0中HDFS和MapReduce存在的各种问题而提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架支持方面的不足,提出了全新的资源管理框架YARN。
Apache Yarn(Yet another Resource Negotiator)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于一个分布式的操作系统平台。而MapReduce等计算程序,则相当于运行于操作系统之上的应用程序。
Yarn被引入Hadoop2,最初是为了改善MapReduce的实现。但是,因为具有足够的通用性,同样可以支持其他的分布式计算模式,比如Spark,Tez等计算框架。
Yarn的设计思想
Yarn的基本思想是将资源管理和作业调度/监视功能划分为单独的守护进程,其思想是拥有一个全局ResourceManager(RM),以及每个应用程序拥有一个Applicationmaster。应用程序可以是单个作业,也可以是一组作业。
一个ResourceManager和多个NodeManager构成了Yarn资源管理框架。它是Yarn启动后长期运行的守护进程,来提供了核心服务。
Yarn的Job提交
1,yarn-client,Driver运行在本地客户端,负责调度application,会与yarn集群产生超大量的网络通信,从而导致网卡流量激增,可能会被公司运维警告。好处在于,直接运行时,本地可以看到所有的log,方便调试。
2,yarn-cluster,用于生产环境,Driver运行在NodeManager,没有网卡流量激增的问题。缺点在于调试不方便。本地用spark-submit提交后,看不到log,只能通过yarn application -logs application_id这种命令来查看,很麻烦。
流程:
1,Spark Yarn Client向Yarn中提交应用程序,ResourceManager收到请求后,在集群中选择一个NodeManager,为该应用程序分配第一个Container,要求它在这个Container中启动应用程序的ApplicationMaster,其中ApplicationMaster进行Driver等的初始化
2,Application Master向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将采用轮询的方式通过RPC协议为各个任务申请资源,并监控它们的运行状态直到运行结束;
3,ApplicationMaster启动后完成初始化作业,Driver生成DAG图,DAG scheduler将DAG拆分成stage发送给Task Scheduler
4,Application Master向ResourceManager申请资源,ResourceManager返回Executor信息
5,Application Master通过RPC启动相应的Executor,Executor向Driver申请task,TaskScheduler将Task发送给Executor
6,Executor执行task,执行结果写入外部或返回Driver端
Yarn的三种调度器
因篇幅问题不能全部显示,请点此查看更多更全内容