Spark原理与实践-批式计算|青训营笔记
这是我参与「第四届青训营 」笔记创作活动的第5天
一、复习前一天的主要知识点
流式计算中的Window计算
1、Watermark的定义及其传递
Watermark定义: 当前系统认为的事件时间所在的真实时间。
Watermark产生: 一般是从数据的事件时间来产生,产生策略可以灵活多样。
Watermark传递: 类似于Checkpoint的制作过程,传递就类似于Checkpoint的barrier,上下游task之间有数据传输关系的,上游就会将watermark传递给下游;
2、Window的分类
- TUMBLE Window (滚动窗口)
- HOP Window (滑动窗口)
- SESSION Window (会话窗口)
详情见我的上一篇笔记
流式计算中的Window计算|青训营笔记
二、Spark原理与实践
1、什么是Spark?
park是一种通用的大数据计算框架,是基于RDD(弹性分布式数据集)的一种计算模型。通俗讲就是可以分布式处理大量极数据的,将大量集数据先拆分,分别进行计算,然后再将计算后的结果进行合并。
官网
Github
2、Spark的安装以及环境变量的搭建
2.1 Spark的下载
我们要安装Spark,首先需要到Saprk官网去下载对应的安装包,Spark官网:
点击红色部分下载,但是由于官网下载过慢所以推荐另一种下载方式
2.1.1 Spark下载
2.1.2 Spark镜像下载
找到需要的版本下载就行,速度较快较为推荐,然后自己设置Spark的文件路径,尽量为全英文的文件夹,记录Spark文件路径为下一步搭建环境变量所用
2.2 Spark环境变量搭建
2.2 文件路径以及环境搭建
2.1.3 我们需要把下图中的bin文件所在的路径设置到环境变量里面。
2.1.4 然后右键我的电脑,然后选择属性,找到高级系统设置,再点击环境变量
2.1.3 点击path部分把path行选中,然后再点击编辑。
2.1.5 把bin (包含bin) 文件夹所在的路径添加到已有环境变量的后面,并用;隔开,然后点击确定,这样环境变量就配置成功。
注意:电脑需要先下载安装Java jdk,并配好环境变量,和上面的步骤一样
Java官网
利用组合键Win+R调出cmd界面,输入spark-shell验证是否安装上。
2.2 Spark的演进以及其架构原理
Spark的演进
Spark运行架构及其原理
Spark应用在集群上运行时,包括了多个独立的进程,这些进程之间通过驱动程序(Driver Program)中的SparkContext对象进行协调,SparkContext对象能够与多种集群资源管理器(Cluster Manager)通信,一旦与集群资源管理器连接,Spark会为该应用在各个集群节点上申请执行器(Executor),用于执行计算任务和存储数据。Spark将应用程序代码发送给所申请到的执行器,SparkContext对象将分割出的任务(Task)发送给各个执行器去运行。
2.3 RDD以及Shuffle等
2.3.1 两类RDD算子:
2.3.1.1 Transform算子:生成一个新的RDD
2.3.1.2:Action算子:触发Job提交
2.3.2 RDD依赖:
窄依赖: 父RDD的每个partition至多对应一个子RDD分区
NarrowDependency
OneToOneDependency
RangeDependency
PruneDependency
宽依赖: 父RDD的每个partition都可能对应多个子RDD分区 ShuffleDependency
2.3.3:Shuffle 稳定性问题 Shuffle稳定性解决方案
| Company | Description |
|---|---|
| Uber | github.com/uber/Remote… |
| Linkedln | Magnet: push-based Shuffle Service for Large-scale Data Processing |
| Alibaba | github.com/alibaba/Rem… |
| Tencent | github.com/Tentcent/Fi… |
参考文章
ps:笔记记得很早发布的很晚