(五)Spark源码理解之BroadcastManager
来源:互联网 发布:手机扫描录入软件 编辑:程序博客网 时间:2024/06/02 03:54
1.BroadcastManager,广播变量,是Spark实现分布式并行的一个重要特点之一,当一个stage读取了广播变量后,其他的stage也可以对该变量进行读写,从而加快数据处理速度
BroadcastManager有两种类型,一种为:HttpBroadcast,一种为TorrentBroadcast,Spark源码是以HttpBroadcast为例,所以我以HttpBroadcast为例详细讲解下
初始化一个HttpBroadcast变量时,是生成一个HttpBroascastFactory对象,接着这个对象调用HttpBroadcast类的initialize方法
<script src="https://code.csdn.net/snippets/624279.js"></script>
HttpBroadcast中还有读写广播变量,移除所有广播变量的数据库和文件等等,以写广播变量为例
<script src="https://code.csdn.net/snippets/624280.js"></script>2.CacheManager
缓存管理器,属于Spark的存储部分,感觉它主要的作用就是确保RDD的某个分区不会被重复保存在磁盘中或者内存中,实现这一任务的主要方法就是getOrCompute()
其主要的思路是get->get不到再compute
首先从块管理器中取相应的分区(RDDBlockId),若取到则返回,否则->先将RDDBlockId放在loading(loading是HashSet[RDDBlockId])中,这样可以避免其余的线程又对该RDDBlockId进行操作,导致错误->计算(应该就是对分区进行相应的函数操作,这些函数我始终认为是我们编写程序时用到的那些函数)该RDDBlockId->如果是本地运行,则直接返回该结果,否则->存放在BlockManager中->后续工作
代码太长,就不贴出来了,理解就是如上所述
SparkEnv中还有ShuffleFetcher,HttpFileServer,MetricsSystem等,在此就不一一详细介绍了,总而言之,SparkEnv是整个spark的环境设置环节,也是spark能否正确运行的关键所在
接下来我将讲讲RDD,个人认为RDD是Spark的一个核心所在,除了它是Spark的基本抽象编程模型之外,它还提供了各种丰富的API,有利于编程的实现
未完待续。。。。
- (五)Spark源码理解之BroadcastManager
- (一) spark源码理解之SparkContext
- (二)spark源码理解之SparkEnv
- (三)spark源码理解之MapOutTracker
- (四)Spark源码理解之BlockManager---part1
- (四)Spark源码理解之BlockManager---part2
- (四)Spark源码理解之BlockManager---part3
- (四)Spark源码理解之BlockManager---part4
- (四)Spark源码理解之BlockManager---part5
- (六)Spark源码理解之RDD
- (六)Spark源码理解之RDD----part1
- (六)Spark源码理解之RDD----part2
- (六)Spark源码理解之RDD----part3
- (六)Spark源码理解之RDD----part4
- (六)Spark源码理解之RDD----part5
- (七)Spark源码理解之TaskScheduler----part1
- (七)Spark源码理解之TaskScheduler----part2
- (七)Spark源码理解之TaskScheduler----part3
- js 内置对象
- js - videojs视频播放,支持ie8
- 以XML作数据库的考生成绩管理系统的实现
- When to use __new__ vs __init__
- js自定义对象
- (五)Spark源码理解之BroadcastManager
- [刷题]Permutations
- Android XML解析技术——DOM
- Android自定义对话框
- zbox的测试例——selectAll+selectInverse
- 漫画:应对海量数据 实现灵活拓展云存储
- JNI中使用LOGCAT 进行Debug
- iOS "xxx" is missing from working copy
- MS SQLserver mysql