Spark-core 运行原理
来源:互联网 发布:阿里云跟阿里巴巴关系 编辑:程序博客网 时间:2024/06/15 08:27
架构图在此
Spark Core部件解析
- 应用程序(Application): 基于Spark的用户程序,包含了一个Driver Program 和集群中多个的Executor;
- 驱动程序(Driver Program): 运行Application的main()函数并且创建 SparkContext. 通常用SparkContext代表Driver Program
- 执行单元 (Executor): 是为某Application运行在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的Executors
- 集群管理程序(Cluster Manager): 在集群上获取资源的外部服务(例如:Standalone、Mesos或Yarn);
Spark Core中操作RDD的命令分为Transformation和Action
Transformation都是采用的懒策略,如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。
map 就是Transformation
collect(), take()等则是Action
运行原理
- SPARK CORE的驱动程序首先运行Application的main函数并创建建立Spark Application的运行环境即SparkContext,SparkContext被注册到某类资源管理器上:Standalone、Mesos或YARN并申请运行Executor资源;
- 资源管理器分配Executor资源并启动Executor后端服务并接受主节点命令以及进行状态汇报
- SparkContext构建成DAG图,将DAG图分解成Stage,并把Taskset发送给 Task Scheduler。Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行同时SparkContext将应用程序代码发放给Executor。
- Task在Executor上运行,运行完毕释放所有资源。
调度模式
Standalone模式 (Spark自带的模式)
spark-shell交互式工具提交Spark的Job时,Driver在Master节点上运行
spark-submit工具提交Job时Driver运行在本地Client端上
$ spark-shell --master spark://localhost:7077 --executor-memory 1g4 is the number of cores available on your machine
YARN模式
YARN (在HADOOP2.0中替代JOB TRACKER 资源分配工作做) 包括两大部件:
ResourceManager (由Application Manager 和Scheduler 组成)负责将集群的资源分配给各个应用使用,而资源分配和调度的基本单位是Container,其中封装了机器资源,如内存、CPU、磁盘和网络等,每个任务会被分配一个Container,该任务只能在该Container中执行,并使用该Container内的资源. ResourceManager同时在每个DataNode上产生ApplicationMaster以监控Container的运行
NodeManager是一个个的计算节点,主要负责启动和资源上监控Application所需的 Container, 包括监控例如内存、CPU、磁盘和网络等的使用情况并将之汇报给ResourceManager。ApplicationMaster与具体的Application相关,主要负责同ResourceManager协商以获取合适的Containers,并跟踪这些Containers的状态和监控其进度;
YARN-Client模式
- Yarn-Client模式中,Driver在客户端本地运行,这种模式可以使得Spark Application和客户端进行交互,因为Driver在客户端,所以可以通过webUI访问Driver的状态,默认是http://hadoop1:4040访问,而YARN通过http:// hadoop1:8088访问。Yarn-Client模式中Application Master仅仅向YARN请求Executor,Client会和请求的Container通信来调度他们工作,也就是说Client不能离开
输入如下命令即可使用YARN-Client模式
$./spark-shell --master YARN-client --num-executors 3 --executor-memory 1g
YARN-CLUSTER模式
- 当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序
- 把Spark的Driver作为一个ApplicationMaster在YARN集群中先启动;
- 由ApplicationMaster创建应用程序,然后为它向ResourceManager申请资源,并启动Executor来运行Task,同时监控它的整个运行过程,直到运行完成.
Driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行,因而YARN-Cluster模式不适合运行交互类型的作业.
spark-submit --master YARN-cluster
- Spark-core 运行原理
- 深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
- 深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
- 深入理解Spark 2.1 Core (六):Standalone模式运行的原理与源码分析
- Spark运行原理
- Spark作业运行原理
- Spark运行原理
- Spark 任务运行原理
- spark 运行原理
- spark 任务运行原理
- Spark SQL运行原理
- Spark开发-spark运行原理和RDD
- Spark简介及其生态圈及Spark-core运行机理
- Spark 的运行流程原理
- Spark运行原理-WordCount解密
- Spark Streaming之运行原理
- ASP.NET Core 运行原理剖析
- Spark core
- PointT
- 深度探索C++ 对象模型【第一章1】
- Leetcode 290 Word Pattern
- 区块链有哪些技术特征
- OSGi规范与原理(杂)
- Spark-core 运行原理
- MySql数据表查询
- Leetcode 38 Count and Say
- 多彩贵州风,爽爽的贵阳-记录我的国庆贵州行
- 【libevent】源码分析(3)-Libevent工作流程探究
- C语言写选择排序法
- NOIP-2014 寻找道路
- Leetcode 409 Longest Palindrome
- 第八周项目二 顺序串算法 (1)(2)(3)(4)