Spark概念理解
来源:互联网 发布:it岗位职责 编辑:程序博客网 时间:2024/06/01 19:37
一、整体结构
1、 Application
每一次通过Spark-submit命令提交的Jar包,都可以看成一个Spark应用程序。它是集群资源器调度的基本单位,一个应用程序对应一个驱动程序。
用户程序,如计算PI的值,统计数据报表等
2、Driver Program
驱动程序就是执行了一个Spark Application的main函数和创建Spark Context的进程,它包含了这个application的全部代码。
问题:Driver是跑在哪个节点上,对应到U服务呢?
3.Master节点
运行Master守护进程的集群节点,管理整个集群,一个集群中,只有一个Active的Master节点。Master节点有两个用途:一是应用程序的调度,对用户提交的应用程序,进行执行先后顺序的调度;二是资源调度,由于集群的资源实际是指Worker节点上的计算和内存资源,因此Master节点是对Worker节点进行资源上的调度。
问题:和YARN有什么关系?
4.Worker节点
运行Worker守护进程的集群节点,是集群资源的贡献节点,一个Worker内部可以包含多个Executor。一个集群中,Worker节点一般会有多个,并且受到Master节点的管理。
就是计算节点。
5.任务执行器(Executor)
Worker节点上执行任务的地方,一个Worker节点可能有多个Executor,每个Executor都拥有固定的核心数量和堆栈大小,并维护一个线程池,池中每一个线程用于执行一个任务。
问题:如何确定Executor个数?
具体实例:60台计算节点,处理120Executor,平均每台包含2个Excutor,可能也会有几台包含了3个,有些只包含一个。
在U服务中,固定分配Executor的CPU及内存资源,及1Cu,队列包含了Cu个数;通过选择队列可指定Executor相关信息,如A队列包含了3Cu,则会分配3个Executor。
问题:Excutor与task之间的关系?
6.作业(Job)
一个Action对应一个作业;
RDD数据的计算是惰性的,在遇到动作操作之前,RDD内部的数据不会真正的被计算。从第一个RDD到最后一个动作RDD这一整套计算流程,称为一个作业。一个Spark应用程序会包含多个作业,但作业之间是相互独立的,因而仅靠了一个作业内部的调度过程即可。
7.阶段(Stage)
计算链内从任意一个或多个连接在一起的RDD到末尾最后一个RDD(Final RDD)内部所有分区数据被计算出来时候的状态,都可以视为一个阶段。Spark是根据Shuffle依赖来划分阶段,阶段划分后,RDD的计算链也被切断。
问题:多个Stage是否能够并发执行?
问题:shuffle是什么?会做什么?
8.任务集(Task Set)和任务(Task)
每一个阶段内部包含多个可以并发执行的任务,这里把同一个阶段内的任务汇总在一起,称为一个任务集。任务集是DAG调度器交付给任务调度器的基本单位;
task是依据Partation进行划分的,每个Partation对应一个task,一个任务可能包含了多个transfrom操作;
http://blog.csdn.net/zhumr/article/details/52518506
待续。。。。
4、stage是如何分解成task
二、RDD
1、RDD
三、shuffle
http://blog.csdn.net/zhumr/article/details/52540994
http://blog.csdn.net/hao707822882/article/details/40581515
- Spark核心概念理解
- Spark概念理解
- Spark及其核心概念理解
- Spark学习——spark中的几个概念的理解及参数配置
- spark:--spark一些概念--9
- 概念理解
- 概念理解
- Spark中组件Mllib的学习22之假设检验-卡方检验概念理解
- Spark的核心概念
- Spark概念RDD
- Spark核心概念
- Spark重要概念
- Spark核心概念
- spark-概念
- Spark核心概念
- SPARK必备概念
- Spark中的一些概念
- spark相关概念
- hdu
- Qt信号和槽机制
- git权威指南总结七:git merge冲突解决
- Java练习题18 JPanel面板
- js实现倒计时
- Spark概念理解
- python中range, xrange, arange的区别与应用示例
- python的socket模块
- 05.去,走你想要的人生——有条理地生活:秩序即是力量(笔记)
- jsp中获取一个list的总长度
- ARM 指令集版本和ARM 版本
- 如何提升效率
- js计算当前时间的为年的第几周,以及周对应的时间范围
- 在循环内部改变循环变量