Spark应用执行机制
来源:互联网 发布:mac的cmd在哪里 编辑:程序博客网 时间:2024/06/06 03:38
Spark是专门为大规模数据设计的快速通用计算引擎。
Spark应用(Application)为用户提交的应用程序。执行模式有Local(测试),Standalone、Yarn和Mesos。根据Spark Application的Driver Program是否在集群中运行,Spark应用的运行方式又可以分为CustomerCluster模式和Client模式。
Spark涉及的基本概念:
Application:Spark的应用程序,用户提交后,Spark为App分配资源,将程序转换并执行,其中Application包含一个Drive Program和若干个Executor。
Driver Progream: 运行Application的main()函数,并创建SparkContext。
SparkContext:Spark程序的入口,负责调度各个运算资源,协调各个worker Node上的Executor。
RDD Graph:RDD是Spark的核心结构,可以通过一系列算子进行操作(主要有Transformation和Action操作)。当RDD遇到Action算子时,将之前所有的算子形成一个有向无形环(DAG),再在Spark中转化为Job,提交到集群执行。一个App中可以包含多个Job。
Executor:是为Application在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘中。每个Application都会申请各自的Executor来处理任务。
Work Node:集群中任何可以运行Application代码的节点,运行一个或多个Executor进程。
Spark组件:
Job:一个RDD Graph触发的作业,往往由Spark Action触发算子,在SparkContext中通过runJob方法想Spark提交Job。
Stage:每个Job会根据RDD的依赖关系被切分为很多歌Stage,每个Stage中会包含一组相投的Task,这一组Task也叫TaskSet
Task:一个分区对应一个Task,Task执行RDD中对应的Stage包含的算子,Task被封装好后放入Exector的线程池中执行。
DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskSheduler。
TaskScheduler:将TaskSet提交给worker Node集群并返回结果。
Spark执行机制
RDD的Action算子触发Job的提交,提交到Spark中的Job生成的RDD DAG(有向无形环),由
Spark的底层实现
Spark的底层通过RDD对数据进行管理,RDD有一组分布在不同节点的数据块,当Spark的应用在对这个RDD进行操作的时候,调度器将包含操作的任务分发到指定的机器上执行,在计算节点通过多线程的方式执行任务。一个操作执行完毕,RDD便转换到另一个RDD,这样,用户的操作依次执行。Spark为了系统的内存不至于快速用完,使用延迟执行的方法执行,只有操作累积到Action,算子才会触发整个操作序列的执行,中间结果不会单独再重新分配内存,而是在同一个数据块上进行流水线操作。
Spark实现了分布式计算和任务处理,并实现了任务的分发、跟踪、执行等工作,最终聚合结果,完成Spark应用的计算。
对RDD的块管理通过BlockManager完成,BlockManager将数据抽象为数据块,在内存或者磁盘进行存储,如果数据不在本节点,则还可以通过远端节点复制到本机进行计算。
在计算节点的执行器Exector中会创建线程池,这个执行器将需要执行的任务通过线程池进行并发执行。
应用提交和执行方式
- Spark应用执行机制
- Spark应用执行机制
- 【Spark】Spark应用执行机制
- 【Spark】Spark应用执行机制
- spark学习笔记2 spark应用执行机制
- 【Spark工作机制详解】 执行机制
- spark学习八 standalone模式下spark应用执行过程
- 【Spark Core】任务执行机制和Task源码浅析1
- 【Spark Core】任务执行机制和Task源码浅析2
- spark部署、计算模型、内部执行原理、工作机制详解
- 【Spark Core】任务执行机制和Task源码浅析
- 【Spark】Spark容错机制
- [spark] spark推测式执行
- 关于安卓应用执行的内部机制分析
- 【Spark】Spark的Shuffle机制
- Spark -12:spark checkpoint机制
- Spark作业执行流程
- spark执行sql语句
- MATLAB中Size的用法
- Launcher.java源码分析
- 移动VR添加视线交互
- 设计模式之工厂模式
- 谈 OpenStack 与 Docker 的落地方案选择
- Spark应用执行机制
- 深入理解Java:注解(Annotation)自定义注解入门
- RobotFramework安装简易步骤
- Leetcode Generate Parentheses 解题思路
- 安装Node和NPM( MAC 系统 )
- 分析php的时间戳转换!
- MySQL重装出错解决
- java(优化23) jstack和线程dump分析
- 前端CSS预处理器Sass