spark总结

一、Spark概述:
Spark模块:

Core
SQL
Streaming
MLlib
Graphx

Spark VS MapReduce:

Spark比MapReduce更适合迭代式多任务计算:

    MapReduce多个作业间的数据通信是基于磁盘, 而Sparke多个作业间的数据通信是基于内存

    一个MapReduce程序只有map+reduce, 而Spark程序可以有多个算子

MapReduce是批处理, 而Spark是批处理 & 微批准实时处理

Shuffle中Spark不用落盘, 而MapReduce要磁盘

Spark有丰富的RDD算子, SQL操作, Streaming流处理, 还可以处理机器学习, 而MapReduce只有Mapper和Reducer

Spark有容错机制可以切断血缘, 避免失败后从源头数据开始全部重新计算

Spark 不能完全替代 MapReduce, 因为内存不充足时, Spark就无法工作了
架构:

Driver

是程序的入口, 是任务的调度者

功能:
    将用户程序转化为Job作业
    调度Task, 分配哪个Task由哪个Executor执行
    向Yarn申请Container资源
    监控Executor的执行情况

Executor

执行Task

对于Standalone独立部署模式, Master(相当于ResourceManager)和Worker(相当于NodeManager)来负责资源的管理调度

整个集群并行执行任务的数量称之为并行度

DAG 有向无环图, 是高度抽象后的 单向无闭环的任务流程图, 用于表示程序的拓扑结构
向Yarn提交Job:

Yarn Client模式(用于测试)

Driver模块的计算运行在本地

Yarn Cluster模式(生产环境)

Driver模块的计算运行在Yarn

    客户端向ResourceManager申请启动Driver(ApplicationMaster)

    ResourceManager分配Container, 在合适的NodeManager上启动Driver(ApplicationMaster)

    Driver(ApplicationMaster)向ResourceManager申请Executor需要的内存; ResourceManager进行分配Container, 然后在合适的NodeManager上启动Executor

    Executor进程启动后会向Driver反向注册, 当所有Executor全部注册完成后Driver开始执行main函数

    执行到Action算子时触发一个Job, 并根据宽依赖划分stage, 并生成对应的TaskSet, 之后将Task分配给Executor执行

二、Spark-Core:
概述:
三大数据结构:

RDD 弹性分布式数据集
累加器 分布式共享只写变量
广播变量 分布式共享只读变量

RDD算子的特点:

弹性

    容错的弹性, 有持久化机制, 数据丢失后可以自动恢复; 且可以切断血缘避免对父级的依赖, 减少重复计算

    计算的弹性, 计算失败后自动重试

    存储的弹性: 自动切换 内存和磁盘 去存储数据

    分片的弹性:可根据需要重新分片

    先将数据集分片, 然后将各个分片放到各个分区

分布式

数据集:RDD封装了计算逻辑,并不保存数据

数据抽象:RDD是一个抽象类,需要子类具体实现

不可变:RDD是不可变的, 要想改变只能产生新的RDD

可分区、各分区间是并行计算的

算子类型:

转换(Transform)算子, 并不会触发Job的执行
    Value类型
    双Value类型
    Key-Value类型

行动(Action)算子, 真正触发Job的执行

一、RDD算子:

算子以外的代码都是在Driver端执行, 算子里面的代码都是在Executor端执行
转换算子:

单Value类型:

map

以每条数据为单位将数据发到Executor端

rdd.map(num => num * 2)
    1

mapPartitions

以每个分区为单位将数据发到Executor端

rdd.mapPartitions(datas => datas.fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值