大数据专题总结(一)spark详细总结(非网文,通俗归纳)

1.spark是什么?

基于内存的快速、通用、可扩展的大数据分析计算引擎

2.spark计算模型

APPLICATION: 用户编写的Spark应用程序

JOB: 一个行动算子就算一个Job,可以理解为我们的程序里面遇到了行动算子,整个代码才会run起来。job可并行可串行。

STAGE:  一个job通常包含一个或多个stage;stage是按照rdd的宽窄依赖进行划分的。

stage可并行可串行。

RDD:  弹性分布式数据集,里面会存放数据来源(分区)、数据计算逻辑、RDD血缘,但并不会存放真正的计算结果,就像一条生产流水线一样,只有当行动算子触发了以后,流水线才启动。(如果想存放RDD的中间计算结果数据,可以做cache持久化,就是把计算结果缓存到内存或者磁盘中,这个我们在后面spark为什么执行如此之快中讲)

TASK: 最小的工作单元,它带着分区数据以及计算逻辑被送到计算节点上去

EXCURTOR:   简单理解为真正干活计算的。在每个Worker上为某应用启动的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个任务都有各自独立的Executor

对应关系图:

3.spark的一些特性

3.1 计算效率高(和mapreduce放一起做对比)

a.缓存RDD

俗称RDD持久化,就是把一些RDD的计算结果缓存在内存/磁盘中,当需要再次使用的时候,就可以直接从内存/磁盘取数。

b.DAG计算模型

job->磁盘->job->磁盘

因为有DAG(有向无环图,简单来说就是了描述RDD之间的依赖,流水线工序;并且这种依赖只有一个前进方向),所以在一个job里面 可以实现多次shuffle,但是对于mapreduce,一个job只能有一次shuffle,所以在多shuffle的计算中,mapreduce相较于spark 会增加多次IO(从磁盘读写)

c.shuffle优化

mapreduce的shuffle会进行排序,spak不会。

d.调度模型

MapReduce采用了多进程模型,Spark采用了多线程模型。多线程更灵活,并且复用可以减少启动、关闭task所需要的开销,节省时间。

进程和线程的区别可见下图:

3.2 容错性高(和mapreduce放一起做对比)

1.可以将中间计算过程存在内存里 2.如果没有存,每个rdd会存操作记录以及血缘,哪个节点出错了就可以按照路线再重新计算一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值