Spark角色在StandAlone中的分布

Spark角色在StandAlone中的分布

在StandAlone中Driver Program,相当于AppMaster,整个应用管理者,负责应用中所有Job的调度执行; 运行JVM Process,运行程序的MAIN函数,必须创建SparkContext上下文对象;一个SparkApplication仅有一个;

第二、Executors 相当于一个线程池,运行JVM Process,其中有很多线程,每个线程运行一个Task任务,一个Task任务运行需要1 Core CPU,所有可以认为Executor中线程数就等于CPU Core核数; 一个Spark Application可以有多个,可以设置个数和资源信息。


用户程序从最开始的提交到最终的计算执行,需要经历以下几个阶段:
1) 用户程序创建SparkContext 时,新创建的SparkContext 实例会连接到ClusterManager。Cluster Manager 会根据用户提交时设置的CPU 和内存等信息为本次提交分配计算资源,启动Executor。

2) Driver会将用户程序划分为不同的执行阶段Stage,每个执行阶段Stage由一组完全相同Task组成,这些Task分别作用于待处理数据的不同分区。在阶段划分完成和Task创建后,Driver会向Executor发送Task;

3) Executor在接收到Task后,会下载Task的运行时依赖,在准备好Task的执行环境后,会开始执行Task,并且将Task的运行状态汇报给Driver;

4) Driver会根据收到的Task的运行状态来处理不同的状态更新。Task分为两种:一种是Shuffle Map Task,它实现数据的重新洗牌,洗牌的结果保存到Executor 所在节点的文件系统中;另外一种是Result Task,它负责生成结果数据;

5) Driver 会不断地调用Task,将Task发送到Executor执行,在所有的Task 都正确执行或者超过执行次数的限制仍然没有执行成功时停止;

Spark程序运行层次结构

监控页面,有4040,有8080,有18080,它们有何区别?

4040: 是一个运行的Application在运行的过程中临时绑定的端口,用以查看当前任务的状态.4040被占用会顺延到4041.4042等。

8080: 默认是StandAlone下, Master角色(进程)的WEB端口,用以查看当前Master(集群)的状态 18080: 默认是历史服务器的端口, 由于每个程序运行完成后,4040端口就被注销了. 在以后想回看某个程序的运行状态就可以通过历史。

服务器查看,历史服务器长期稳定运行,可供随时查看被记录的程序的运行过程。

运行起来一个Spark Application, 然后打开其4040端口,并查看: /export/server/spark/bin/spark-shell --master spark://node1.itcast.cn:7077

在node1运行pyspark-shell,WEB UI监控页面地址:http://node1:4040

可以发现在一个Spark Application中,包含多个Job,每个Job有多个Stage组成,每个Job执行按照DAG图进行的。

Spark Application程序运行时三个核心概念:Job、Stage、Task,说明如下:

Job:由多个Task 的并行计算部分,一般Spark 中的 action 操作(如save、collect,后面进一步说明),会生成一个Job。

Stage:Job 的组成单位,一个Job 会切分成多个Stage,Stage 彼此之间相互依赖顺序执行,而每个Stage 是多个Task 的集合,类似map 和reduce stage。

Task:被分配到各个Executor 的单位工作内容,它是 Spark 中的最小执行单位,一般来说有多少个Paritition。

(物理层面的概念,即分支可以理解为将数据划分成不同部分并行处理),就会有多少个Task,每个Task 只会处理单一分支上的数据。

一个Spark程序会被分成多个子任务(Job)运行, 每一个Job会分成多个State(阶段)来运行, 每一个State内会分出来多个Task(线程)来执行具体任务。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值