【博学谷IT技术支持】
Spark 是一款用于大规模数据处理分析式的分布引擎
MR的弊端:
- 计算效率慢
- 使用API相对比较低级
- 迭代计算非常不方便
什么是迭代计算:
- 在计算过程中,需要将计算划分为N个阶段,每个阶段直接互相依赖,后 一个阶段必须等待前一个阶段执行完成,然后才能执行后一个阶段
SparK效率优于MR的原因:
Spark提供全新的数据结构:RDD支持在内存中进行计算,部分迭代操作支持内存迭代
Spark程序是基于线程来运行的,而MR是基于进程来运行的,线程的启动和销毁是优于进程的
发展历史:
- 2009出现
- 14年称为顶级项目
- 16年2.0
- 19年3.0
Spark的特点
- 运行速度快
- 易用性
- 通用性
Spark是由多个组件组成,主要有Spark Core, Spark SQL, Spark Streaming, Spark MLib, Spark Graphx
spark Core: Spark的核心,学习spark的基础,学习spark Core主要学习RDD主要维护RDD数据结构
提供RDD各种API
提供了与内存相关的API
Spark SQL: 通过SQL的方式来操作Spark
Spark streaming:Spark用于进行流式计算(实时计算)的组件 暂不学习在国内,整个实时部分,主要是应用在F1ink,而非Spark Streaming ,因为Spark的流并不是真正意义上流式计算,为微批处理
Spark MLib: Spark用于进行机器学习的库专门针对特定人群
Spark Graphx: Spark用于进行图计算的库专门针对特定人群
- 随处运行
Spark 是一个主从分布式高可用集群框架
主节点:
管理众多的从节点
负责资源的分配管理
负责接收客户端提交任务请求,负责分配Dirver程序启动在那个从节点上
从节点:
1- 和主节点保持心跳,汇报自己的资源信息
2- 负责接收Driver分配的任务,进行任务的执行
3- 负责启动Driver程序
1- Spark集群架构: 是一个主从分布式高可用集群架构
2- 明确集群中主 从节点的作用
3- 明确主节点是如何基于zk实现主备切换: 临时节点 + 定时检测
spark-submi执行方式
./spark-submit --master local[*]
/export/data/workspace/ky06_pyspark/_01_SparkBase/src/_05_pyspark_wd.py
Driver进程:类似于 MR中 ApplicationMaster
主要负责:任务的资源申请,任务分配 任务进度的管理,等 基本与任务相关的工作 都是交给Driver来处理
Executor程序:执行器(理解为是一个线程池)spark最终执行的线程都是运行在executor上,executor是可以有多个的,每个里面都是可以有多个线程的
Spark-Submit的相关参数
// 表示应用运行的模式
--master
表示运行的地方
--deploy-mode
Spark Core
核心: 采用多节点处理,将一个任务拆分为N多个子任务,分布运行在不同的节点上进行并行的处理,各个节点计算完成后,将结果汇总处理即可。
RDD是一个抽象的数据模型,RDD本身并不存储任何的数据,仅仅是一个数据传输的管道,在这个管道中,作为使用者,只需要告知给RDD应该从哪里读,中间需要进行什么样的转换逻辑操作,以及最后需要将结果输出到什么位置即可,一旦启动后,RDD会根据用户设定的规则,完成整个处理操作
RDD的五大特性和五大特点
五大特性
1- (必须的) RDD可分区的
2- (必须的) 每一个RDD都是由一个计算函数产生的
3- (必须的)RDD之间是存在着依赖关系
4- (可选的) 对于KV类型的数据,是存在分区函数,对于KV类型的RDD默认是基于Hash 分区方案
5- (可选的) 移动数据不如移动计算(让计算程序离数据越近越好)
标签:博学,节点,RDD,线程,计算,超强,Spark,spark
From: https://www.cnblogs.com/neilniu/p/17094158.html