spark的任务执行流程解析

本文深入解析Spark的工作流程,包括Master和Worker的角色、任务分配方式、Executor的并行度、窄依赖和宽依赖的原理,以及Stage划分和物理执行策略。Spark采用Pipeline思想,最大化数据复用,提高计算效率。面对宽依赖时,通过Stage划分优化计算,减少重复计算和内存浪费。
摘要由CSDN通过智能技术生成

一、从架构上看Spark的Job工作(Master\Worker)

[睡着的水-hzjs-2016.8.18]

1.Master节点上是Master进程,主要是管理资源的,资源主要是内存和CPU。Master能够接收客户端发送的程序并且为程序进行注册。worker节点有worker进程,负责当前节点的内存和cpu的使用,spark是主从结构式架构。

2.Spark运行作业的方式有很多,最简单的是就是通过spark-shell ,每个程序的程序的ID是向master 注册的时候由master分配的。worker节点在执行程序工作的时候的core数量、内存的大小是在安装Spark集群的时候配置文件中我们自己配置的。当启动spark-shell 的时候并没有运行任何job计算任务,那Master有没有分配资源呢?是有的!

3.master分配资源的方式是粗粒度的。spark-shell 中默认的是没有任何的Job,有资源分配就是因为分配资源的方式粗粒度的,默认情况下,虽然没有job计算,只要提交了程序并注册了,就会分配资源。

4.分配资源默认的分配方式在每个workers上,为当前程序分配一个Executorbackend 进行,且默认情况下会最大化的使用cores和memory。

5.Executor一次性最多能运行多少个并发的task,取决于当前Executor 能够使用的work的core的数量

6.有多个Executor ,就能更多的获取内存跟core的数量,但是默认情况下,一个节点只有一个Executor.

7.出现OOM的解决方式之一就是加大分片的数量。

8.一个分片数据进哪一个Executor ,主要取决于数据的本地性。<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值