赞
踩
Spark是一个计算框架
Hadoop是包含计算框架MapReducehe分布式文件系统HDFS。
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
(1)Application就是你写的代码。
(2)Driver节点上的Driver程序运行的是main函数
(3)Worker节点就是工作节点,上面运行Executor进程。
(4)Executor进程负责运行Task。
如这里的collect()算子就是一个action。
我的理解是:如果有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来实现。
当一个作业运行完毕后,累积器的最终值可以从驱动程序中获取
介绍Broadcast variables和Accumulators的参考文章:https://www.zybuluo.com/BrandonLin/note/446869
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。