【大数据】Spark On Yarn 理解(图文)
基本架构
1:ResourceManager(资源管理器):ResourceManager是YARN的核心组件,负责管理和分配集群资源。它接收来自Spark应用程序的资源请求,并根据可用资源情况进行分配和调度。
2:NodeManager(节点管理器):NodeManager是每个节点上的代理程序,负责管理该节点上的资源。它向ResourceManager报告节点的可用资源,并根据ResourceManager的指令来启动和停止容器,其中容器是运行Spark应用程序的基本单位。
3:Spark Driver(驱动程序):Spark Driver是Spark应用程序的主要组件,负责解析用户代码、创建任务和执行作业。在Spark On YARN中,每个Spark应用程序都有一个驱动程序,它运行在YARN的容器中。
4:ApplicationMaster(应用程序管理器):ApplicationMaster是Spark应用程序在YARN上的代理程序,负责与ResourceManager进行通信,申请资源、分配任务和监控应用程序的执行。每个Spark应用程序都有一个ApplicationMaster,它运行在YARN的容器中,并协调所有的Spark任务。
5:Spark Executor(执行器):Spark Executor是在集群节点上运行的任务执行进程,负责执行Spark任务的具体计算。每个Spark Executor都与一个YARN容器关联,由ApplicationMaster分配资源并启动。
Client模式(客户端模式)与 Cluster模式(集群模式)
原理步骤是相同的:(位置上有所不同)
1:用户在客户端机器上编写Spark应用程序,并通过spark-submit命令将应用程序提交到YARN集群。
2:在客户端机器上运行的spark-submit命令将应用程序打包成一个可执行的Jar包,并将该包和一些配置信息发送到YARN集群的ResourceManager。
3:ResourceManager接收到应用程序的提交请求后,为其分配一个ApplicationMaster。此时,ApplicationMaster的运行环境和资源是由YARN集群提供的。
4:ApplicationMaster启动后,负责解析用户代码,并创建Spark任务。它会向ResourceManager申请资源,并将任务分配给Executor。
5:ResourceManager根据可用资源情况,为ApplicationMaster和Executor分配资源,即启动YARN容器。这些容器会在集群节点上启动,并通过网络与ApplicationMaster进行通信。
6:ApplicationMaster向ResourceManager申请Executor资源,并将任务分配给Executor。它会将应用程序的Jar包和相关依赖文件发送给Executor所在的节点。
7:Executor启动后,负责执行Spark任务的具体计算。它会根据ApplicationMaster的指令,从数据源加载数据,进行数据处理和转换,并将结果写入到存储系统。
8:ApplicationMaster监控任务的执行情况,包括任务的进度、失败和完成等状态。它会向ResourceManager报告任务的状态,并根据需要申请更多的资源。
9:当任务完成时,ApplicationMaster向ResourceManager释放资源,并将任务执行的结果返回给客户端。
10:客户端机器上的spark-submit命令接收到任务完成的通知后,将任务的执行结果和日志文件从YARN集群上下载到本地。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界