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

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

如何划分stage?

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

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

闭包:

由上述图片介绍可知,闭包会导致全局变量不能被所有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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值