Spark基础概念

此文章打算梳理之前项目所用过的Spark的一些基础概念。

Spark是一个计算框架

Hadoop是包含计算框架MapReducehe分布式文件系统HDFS。

Spark是基于内存的

Spark:

Spark有四大组件包括Spark Streaming、Spark SQL、Spark MLlib和Spark GraphX。

四大组件的应用场景可以参考这篇文章:http://f.dataguru.cn/thread-593630-1-1.html

使用的Spark的部署模式为独立模式,即不依赖其它的资源管理系统。

Spark的三种部署模式可以参考这篇文章:https://wenku.baidu.com/view/284ba2ec227916888586d78d.html

Spark的Application、Driver节点、Worker节点、Executor

(1)Application就是你写的代码。

(2)Driver节点上的Driver程序运行的是main函数

(3)Worker节点就是工作节点,上面运行Executor进程。

(4)Executor进程负责运行Task。

Spark的job、state、task

Spark基础概念_第1张图片

如这里的collect()算子就是一个action。

如何划分stage?

Spark基础概念_第2张图片

我的理解是如果有n个shuffle过程,那就有n+1个stage

参考文章:http://litaotao.github.io/spark-questions-concepts

闭包:

Spark基础概念_第3张图片

由上述图片介绍可知,闭包会导致全局变量不能被所有Worker共享,即一个Worker修改了全局变量后,对其它的Worker是透明的。

 

闭包带来的问题的参考文章:https://blog.csdn.net/liangyihuai/article/details/56840473

由上述图片可知,每个task都会接受的一个闭包,有时候会太浪费资源了。因此出现了Broadcast variables,该变量发送给每一个executor,executor将广播变量缓存。广播变量是单向传播的,从驱动到任务,没有办法更新广播变量或者将更新传播回驱动程序。这种情况下,可以通过Accumulator来实现。

Accumulators

当一个作业运行完毕后,累积器的最终值可以从驱动程序中获取

介绍Broadcast variables和Accumulators的参考文章:https://www.zybuluo.com/BrandonLin/note/446869

 

你可能感兴趣的:(Spark基础概念)