
spark
文章平均质量分 61
qq_33872191
这个作者很懒,什么都没留下…
展开
-
spark1.6源码-----任务提交与执行之RDD的构建
概述: spark的执行流程网上一大堆,我就不写了。 本文以sparkWordCount为例来解析 val input=sc.textFile("C:\\Users\\pc\\PycharmProjects\\PyNews\\word*",1) .flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_).sa...原创 2018-12-22 22:37:51 · 229 阅读 · 0 评论 -
Spark1.6-----源码解读之BlockManager
前面已经介绍了BlockManager的主要组件,现在来看看BlockManager自身的实现。 dropFromMemory:当memory sotre的空间满了之后会调用这个方法,它会抛弃一些block块。 reportBlockStatus:向BlockManagerMaster报告Block的状态 putSingle:将一个由对象构成的Block写入存储系统 putBytes:将序...原创 2018-12-16 20:21:45 · 500 阅读 · 0 评论 -
Spark1.6-----源码解读之BlockManager组件MemoryStore
MemoryStore负责将没有序列化的java对象数组或者序列化的ByteBuffer存储到内存中: MemoryStore内存模型 maxUnrollMemory:当前Driver或者Executor的block最多提前占用的内存的大小,每个线程都能占内存。(类似上课占座,人没到,但是位置有了) maxMemory:当前Driver或者Executor存储所能利用最大内存大小。 cur...原创 2018-12-16 13:49:29 · 387 阅读 · 2 评论 -
Spark1.6-----源码解读之BlockManagerMaster对BlockManager的管理
Driver的BlockManagerMaster对存在与Executor上的BlockManager统一管理。比如Executor需要向Driver发送注册BlockManager,更新Executor上Block的最新信息。但是Driver和Executor存在与不同的机器上,通过spark消息系统进行消息传递的。Driver的BlockManager会持有BlockManagerMaster...原创 2018-12-16 12:35:36 · 247 阅读 · 0 评论 -
Spark1.6-----源码解读之BlockManager组件shuffle服务和客户端
spark是分布式部署的,每个Task最终都运行在不同的机器节点上,map任务的输出结果直接存储到map任务所在的机器的存储体系,reduce极有可能不再同一个机器上运行,所以需要远程下载map任务的中间输出。所以存储系统中也包含ShuffleClient。 在BlockManager 176行initialize方法中初始化了shuffleClient: def initialize(...原创 2018-12-16 11:59:59 · 226 阅读 · 0 评论 -
Spark1.6-----源码解读之BlockManager的概述
BlockManager的实现 BlockManager是spark存储体系中的核心组件,Driver 和Executor都会创建BlockManager。 在SparkEnv 364行会创建BlockManager: // NB: blockManager is not valid until initialize() is called later. val block...原创 2018-12-16 10:24:13 · 213 阅读 · 0 评论 -
Spark1.6-----源码解读之TaskScheduler启动
必须启动TaskScheduler才能让他发挥作用 SparkContext 530行: _taskScheduler.start() 实际去调TaskSchedulerImpl 143行: override def start() { backend.start() if (!isLocal && conf.getBoolean("spa...原创 2018-12-15 21:32:26 · 245 阅读 · 1 评论 -
Spark1.6-----源码解读之DAGScheduler
纯鼠标点代码写出来的,阅读时希望你能跟着这样操作。 DAGScheduler的主要用于在任务正式提交给TaskSchedulerImpl提交之前做一些准备工作。比如创建job,将DAG的RDD划分到不同的stage,提交stage SparkContext 525行创建DAGScheduler: _dagScheduler = new DAGScheduler(this) DAG...原创 2018-12-15 20:27:11 · 187 阅读 · 0 评论 -
Spark1.6-----源码解读之TaskScheduler
TaskScheduler是SparkContext重要成员之一,负责任务的提交,并且请求集群管理器对任务调度。他也可以看做任务调度的客户端。 SparkContext 522行 创建TaskScheduler: val (sched, ts) = SparkContext.createTaskScheduler(this, master) SparkContext 2592行 ...原创 2018-12-15 20:01:43 · 173 阅读 · 0 评论 -
Spark1.6-----源码解读之SparkEnv
我是跟着源码点进去一步一写的,所以观看时希望大家能一步一跟着源码走,不要只看博文。 在SparkContext 284行创建SparkEnv: // This function allows components created by SparkEnv to be mocked in unit tests: private[spark] def createSparkEnv( ...原创 2018-12-15 19:30:27 · 220 阅读 · 0 评论 -
spark1.6源码-----任务提交与执行之任务提交
我是从RDD的collect函数进去的。 /** * Return an array that contains all of the elements in this RDD. */ //调用了sparkContext的runJob //返回一个Array集合 def collect(): Array[T] = withScope { val resul...原创 2018-12-23 09:16:16 · 307 阅读 · 0 评论