Spark原理与实践-批式计算|青训营笔记

119 阅读3分钟

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下载 906BC2774F62CDB516E54A5D4A746FC5.jpg 2.1.2 Spark镜像下载
找到需要的版本下载就行,速度较快较为推荐,然后自己设置Spark的文件路径,尽量为全英文的文件夹,记录Spark文件路径为下一步搭建环境变量所用

2.2 Spark环境变量搭建

2.2 文件路径以及环境搭建
2.1.3 我们需要把下图中的bin文件所在的路径设置到环境变量里面。 D14941D4D4C56948F7B25B1EEF037054.jpg
2.1.4 然后右键我的电脑,然后选择属性,找到高级系统设置,再点击环境变量 image.png
2.1.3 点击path部分把path行选中,然后再点击编辑。 image.png
2.1.5 把bin (包含bin) 文件夹所在的路径添加到已有环境变量的后面,并用;隔开,然后点击确定,这样环境变量就配置成功。 image.png
注意:电脑需要先下载安装Java jdk,并配好环境变量,和上面的步骤一样
Java官网
利用组合键Win+R调出cmd界面,输入spark-shell验证是否安装上。

2.2 Spark的演进以及其架构原理

Spark的演进 image.png
Spark运行架构及其原理
image.png
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稳定性解决方案

CompanyDescription
Ubergithub.com/uber/Remote…
LinkedlnMagnet: push-based Shuffle Service for Large-scale Data Processing
Alibabagithub.com/alibaba/Rem…
Tencentgithub.com/Tentcent/Fi…

参考文章

青训营学员手册
Spark安装与环境配置
个人笔记

ps:笔记记得很早发布的很晚