spark备忘

Spark 核心进程有两个:
一,Driver:Spark驱动器节点,用于执行Spark任务中的main方法,负责实际代码的执行工作。
Driver在Spark作业执行时主要负责:
1.将用户程序转化为作业(job)
2.在Executor之间调度任务(task)
3.跟踪Executor的执行情况

二,Executor:是集群中工作节点(Worker)中的一个JVM进程,负责在 Spark 作业中运行具体任务(Task),任务彼此之间相互独立。
Executor有两个核心功能:
1.负责运行组成Spark应用的任务,并将结果返回给驱动器进程
2.它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。

Spark核心数据结构:RDD
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。如何理解这几个描述?
弹性:
1.存储的弹性:内存与磁盘的自动切换;
2.容错的弹性:数据丢失可以自动恢复;
3.计算的弹性:计算出错重试机制;
4.分片的弹性:可根据需要重新分片。
分布式:数据存储在大数据集群不同节点上
数据集:RDD封装了计算逻辑,并不保存数据
数据抽象:RDD是一个抽象类,需要子类具体实现
不可变:RDD封装了计算逻辑,是不可以改变的,想要改变,只能产生新的RDD,在新的RDD里面封装计算逻辑
可分区、并行计算:Spark可以将一个作业按分区切分多个Task后,发送给Executor节点并行计算。

RDD缓存:
可通过RDD的cahe()和persist()方法,将前面的计算结果缓存,默认缓存在JVM堆内存,注意:触发action计算时才会进行缓存在计算节点的内存,供后面重用。
缓存有可能丢失,比如内存不足而被删除,RDD有缓存丢失容错,通过linage重新计算丢失的数据,由于各个partition是相互独立的,只需重新计算丢失的partition即可。

checkpoint:
将RDD的中间结果保存到文件系统,并切断血缘依赖。比缓存可靠性高,对于血缘过长的RDD,中间建议进行checkpoint。
checkpoint会专门有一个job来执行,会重新计算一次RDD,
因此在对rddcheckpoint之前建议进行缓存,这样可以从缓存中读取数据,避免重新弄计算。

分区器:
对于kv数据类型的RDD,有hash和range两种,默认hash,也可自定义分区器。

累加器:
累加器用来把Executor端变量信息聚合到Driver端。在Driver程序中定义的变量,在Executor端的每个Task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回Driver端进行merge。

广播变量:
广播变量用来高效分发较大的对象。向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值