spark入门基础

spark学习
spark是一款全栈的计算引擎,基于RDD(弹性式分布式数据集)主要基于内存计算
RDD的解释:
弹性:数据主要基于内存存储,如果内存不够,磁盘顶上。
数据集:就是一个普通的scala的不可变的集合(Array, Map,Set)
分布式:这个集合是分布式的,这个集合RDD被拆分成多个Partition(分区)存储在不同的机器里面。RDD不存储数据,数据存储在各个partition中。
RDD只是这些partition的抽象ADT(abstract data type),在这个ADT上面我们定义了非常多的操作,比如flatMap、比如map、filter等等高阶函数。
一栈式,主要说的是,Spark不仅仅可以进行离线计算(SparkCore),同时还可以进行流式处理(SparkStreaming)、交互式计算(SparkShell,SparkSQL,StructStreaming),图计算(SparkGraphx),机器学习(SparkMLLib),也就是说我们可以在一个项目中,同时可以使用上述所有的框架,这是Spark相比较于其它框架最大的优势。

saprk作业对RDD执行时有两种方式
一是懒加载,当是flatmap,map、reducer算子时,不会立即执行,真正的执行需要通过foreach的触发才可以
spark的高阶函数有两种,一种是lazy延迟加载的,一种是立即执行的
延迟加载的是transformation算子,立即执行的是action算子
在spark中transfromation的操作运行都是需要action来触发的

spark名词解释
1、ClusterManager在yarn中为资源管理器,主节点
2、worker从节点控制计算节点
3、Driver运行主函数创建SparkContext,负责向ClusterManager提交spark作业,组织spark作业,然后和spark集群中的executor进行交互。
Driver最重要的工作,就是创建SparkContext,而SparkContext就是Spark Application的入口。
4、Executer执行器,执行任务的组件,和启动线程池运行任务
5、SparkContext,控制应用的生命周期
6、RDD:Spark的基本执行单元 ,被拆分成的部分称之为该RDD的分区partition,就类似于hdfs中的一个文件file被拆分成多个block块存储一样。真正存储数据的是partition,RDD不存储数据,RDD就是对这个partition的抽象。又因为RDD是一个scala集合,在scala集合上面有非常多个的算子操作,比如flatMap、map、reduce、sum等等。可以理解为是一个ADT(abstract data type抽象数据类型)
7、DAG Scheduler 7)实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。
非常重要的作业就是进行stage阶段的划分。
8、8)TaskScheduler:将任务(Task)分发给Executor执行。
将DAGScheduler划分的stage(task的形式)任务,交付给executor去干活。
9、9)Stage:一个Spark作业一般包含一到多个Stage。
每次提交的是一个stage阶段的任务。
10、Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能
11、Transformations:转换(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。
12、12)Actions:操作(Actions) (如:count, collect, save,foreach等),Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。
13、13)SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。SparkEnv内创建并包含如下一些重要组件的引用。
MapOutPutTracker:负责Shuffle元信息的存储。
BroadcastManager:负责广播变量的控制与元信息的存储。
BlockManager:负责存储管理、创建和查找块。
14、MetricsSystem:监控运行时性能指标信息。
15、15)SparkConf:负责存储配置信息。
可以理解为MR编程中的Configuration。当前应用程序的配置信息。SparkContext的构建离不开SparkConf。

rdd的宽依赖和窄依赖,
窄依赖:raa中的parition中的数据,只依赖于父rdd中一个paration或常数个paration这种依赖关系称为窄依赖
常见的窄依赖有操作有flatMap,map,filter等等
宽依赖:rdd中parition中的数据依赖于父rdd中所有的partition把这种依赖关系称为宽依赖
常见的宽依赖有:reduceByKey等等

spark作业运行架构原理
spark集群都是基于akka actor的事件驱动模型的
1、通过spatk脚本启动spark集群的master和worker节点启动对应的进程
2、当work进程启动起来之后向master进程发送注册信息,
3、当worker向master注册成功之后worker不断向master进行发送心跳,监听主节点是否存在
4、driver向spark集群提交作业,也就注册我们spark应用需要的资源,(申请spark运行程序的资源)
5、master接受到driver提交作业之后在对应节点启动executor进程
6、worker接受到master节点的启动executer任务之后启动对应的executer进程,启动成功之后向master汇报启动成功们可以接收任务
7、executer启动之后向driver反向注册告诉driver谁可以接收任务
8、driver当接收到注册之后就知道了向谁发送spark任务,那么在spark集群中就有一组独立的executer进程为该driver服务
9、这时DAGScheduler根据编写业务逻辑将spark作业分成若干个stage阶段,然后为每个阶段组装一批task组成taskset(task中就是序列化之后我们编写的spark transfromation)然后交给taskscheduler分发给对应的1executer
10、当executer接受到driver发送过来的task之后进行反序列化,然后将task封装进一个taskrunner线程中,然后放入到本地线程池中,调度我们的作业的执行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值