以下内容整理来源于DT大数据梦工厂:
本期内容:
1、Hadoop Yarn 的工作流程
2、Spark on Yarn两种运行模式
3、Spark on Yarn工作流程
4、Spark on Yarn 工作内幕
5、Spark on Yarn 最佳实践
一: Hadoop 解析
1、Yarn 是Hadoop推出整个分布式大数据集群的资源管理器,负责资源的管理和分配。基于Yarn我们可以
2、
3、Yarn公主流程解析:
client 客户端提交 job程序给Reource Manager
Node Manaager 向 resource Manager汇报资源信息
app Master 向Resource Manager申请资源
constainer 向app Master 汇报计算情况, constainer 向NodeManager 汇报资源信息,constainer 负责计算
AppMaster 个数是由提交的多少个程序决定的。
appMster 是由客户端提交了任务,Resource Manager 跟机器情况启动App Master
4、客户端向RedourceManager 提交Application,Resource 接受应用成并根据集群资源情况决定在具体某个节点上来启动当前提交的应该程序的Driver(ApplicationMaster),决定会命令具体的某个Node 上的资源管理器NodeManager来启动一个新的JVM进程运行程序的Driver部分,当Application启动的时候(会首先想Resource Manager注册说明自己负责当前的程序)会吓着当前Application相关的jar等资源并基于此决定具体向ResourceManager申请资源的具体内容,Resorce Manager
接受到Application Manager的资源分配请求之后会最大化的满足资源分配的请求并罚资源的元数据信息发给ApplicationManager,ApplicaotpnManagers受到资源的元数据信息后会根据元信息发送给具体机器上的NodeManager,让NodeManager来启动具体的Container, container在启动后必须向ApplicationManager注册,当ApplicationMaster获得了用于计算的containers后开始进行任务调度和计算直到作业执行完成。如果ResourceManager第一次没有完全成请求的资源分配,后需要ResourceManager发现集群中有新的可用资源时候,会主动向ApplicationMaster发送新的可以资源的元数据信息提供更多的资源用于当前程序的运行!
补充说明:
1、 constainer 可不可用复用看情况:Hadoop 计算的Mapreducer不可复用,如果是spark on Yarn 可以复用
2、Container具体的销毁是有ApplicationMaster来决定的,ApplicationMaster 发送指令给NodeManager 让NM销毁container
二、spark on Yarn:此时不需要启动Spark集群,只需要启动yarn即可,Yarn 的ResourceManger就相当于spark standalong 模式下的Master!
1、spark on Yarn 的2种运行模式:唯一的决定是当前Application从任务调度去Driver运行在什么地方!
a)cluster: Driver 运行的yarn集群下的某台机器上的JVM进程中!
b) Client:Driver 运行在当前提交程序的客户机器上。
需要说明的是,无论什么模式,只要当前机器运行了spark代码,就必须安装spark!
2、spark on Yarn 的运行实战:
a)client模式:在命令终端直接看到运行的过程信息尤其方便做测试:
spark解密: Standalone 模式下启动spark集群(也就是说启动Master 和Wrok其实启动的是资源管理器),真正作业计算的时候和集群资源管理器没有任何关系,所以spark 的Job真正执行作业的时候不是运行在你启动的spark集群中,而是运行在一个个JVM中的,只要JVM所在的机器上安装配置了spark即可!
3、spark on Yarn模式下Driver和ApplicationMaster的关系
a)Cluster: Driver位于ApplicationMaster进程中,我们需要通过Hadoop默认制定的8088端口来通过web控制台来查看当前Spark运行的进程信息。
b) Client: Driver 为提交代码的机器上,此时ApplicatonMaster依旧位于集群中且只负责资源的申请和launchExecutor,此时启动后的Executor并不会向ApplicationMaster进程注册而是向Driver注册。
三、最佳实战
1、在spark on yarn 的模式下,Hadoop yarn 的配置 yarn.nodemanager.local-dirs会覆盖spark.local.dir!
2、实际生产环境下一版都回采用cluster,我们会通过History server 来获取最终全部的运行信息
3、如果想直接看运行日志信息可以使用命令: yarn logs -applicationId <app ID>