spark学习Day01

1、shuffle过程的数据会写磁盘,因为数据洗牌重组如果发往某一个节点的partition数据过多,就会造成OOM,当然如果写的cipa磁盘的小文件过多,太多的io会影响效率。

2、每个stage的task数量由最后一个rdd的partition数量决定

3、1:n关系

一个app:多个job(job的个数由一个driver(main)中的action算子决定)

一个job:多个stage(stage的数量由shuffle数量决定=shuffle数量+1)

一个stage:多个task(前面2中提到,多个task形成taskset)

 

spark建立在rdd之上,将需要处理的数据转换为rdd,然后进行一系列的算子操作,得到结果。rdd是一个容错的,并行的数据结构,可以将数据存储到内存或磁盘中,并控制数据分区,有丰富的api来操作数据。

Hadoop--数据集,数据集的特性:位置感知,容错性和均衡负载等。容错采用:数据检查点和记录数据更新。

spark--工作集,也具有上述的特性,为了有效的实现容错,rdd本身 提供了一种高度受限的内存共享模型,它是只读的记录分区的集合。并且rdd之间会形成依赖链,即血缘关系(lineage),用于恢复数据。

RDD:弹性分布式数据集是分布式内存的一个抽象概念,是一种高度受限的(只读)的内存共享模型,能够横跨集群的所有节点进行并行计算,是一种基于工作集的应用抽象。

RDD底层数据存储原理:其数据分布于多台机器节点上。每个节点上都会起一个blockmanagerslave管理其对应的数据块,driver节点会起一个blockmangagermaster来管理所有节点的block元数据。

本质上RDD相当于数据的一个元数据结构,存储着数据分区及逻辑结构的映射关系,存储着rdd之前的依赖关系。

spark支持重分区,分区是逻辑概念,实际的存储由blockmanage管理。

RDD五大特性:

1、分区列表

rdd是被分区的,每一个分区对应一个task,分区数量决定了并行的计算数量。

2、每一个分区都有一个计算函数

3、依赖于其它rdd列表

spark通过rdd的依赖形成调度关系,对rdd的操作形成整个程序。

依赖分为宽窄两种,宽依赖意味着shuffle,是stage划分的边界,spark宽依赖支持两种shuffle manager,即hash-shuffle-manager和sort-shuffle-manager。

4、k-v数据类型的rdd分区器,控制分区策略和分区数。

每一个k-v类型的rdd都有partitioner属性。

5、每个分区都有一个优先位置列表

优先位置列表会存储每个partition的优先位置,代码发生运算前就已经知道它需要运行的数据在什么地方了,有具体的节点信息,这就符合大数据中的数据不动代码动的原则(移动数据不如移动计算)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值