
Spark连载
Spark连载
LittleMagics
Flinker @ JD.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spark Core源码精读计划 番外篇B-1:重回Spark RPC环境
目录前言RPC底层概览传输配置TransportConf传输上下文TransportContext成员属性与构造方法创建传输客户端工厂TransportClientFactory创建传输服务端TransportServer初始化Netty ChannelPipeline与ChannelHandler总结前言又是很久没有连载,万分抱歉。今天(注:其...原创 2019-11-11 23:07:12 · 293 阅读 · 0 评论 -
Spark Core源码精读计划#31:BlockManager块写入流程
目录前言块写入流程块写入的入口doPutIterator()方法doPut()方法总结前言一个多月没顾上这个专题,惭愧惭愧。十一期间尽量赶上进度吧。上一篇文章讲完了BlockManager管理下的数据读取流程,今天就来看写入的流程,顺便将读写放在一起总结一下。块写入流程块写入的入口由于距离上一篇已经过去很久了,这里再贴一次BlockManage...原创 2019-09-30 21:18:46 · 410 阅读 · 0 评论 -
Spark Core源码精读计划#30:终于讲到的BlockManager及其管理的块读取流程
目录前言BlockManager的初始化构造方法与属性成员初始化方法块读写的入口块读取流程从本地读取数据从远端读取数据总结前言如题,在前方做了很多铺垫之后,本文终于可以来看BlockManager了,可谓是千呼万唤始出来。块管理器BlockManager会运行在Spark集群中的所有节点上。每个节点上的BlockManager通过Mem...原创 2019-08-22 22:29:41 · 427 阅读 · 0 评论 -
Spark Core源码精读计划#29:BlockManager主从及RPC逻辑
目录前言初始化BlockManagerMaster与RPC端点主RPC端点BlockManagerMasterEndpoint构造方法与属性成员接受并回复RPC消息例:处理BlockManager注册例:处理BlockManager心跳从RPC端点BlockManagerSlaveEndpointBlockManagerMaster总结前言通过...原创 2019-08-15 23:33:42 · 274 阅读 · 0 评论 -
Spark Core源码精读计划#28:磁盘存储DiskStore
目录前言磁盘存储DiskStore构造方法与属性成员写入块写入字节读取字节磁盘块数据DiskBlockData转化为ChunkedByteBuffer转化为ByteBuffer总结前言在上一篇文章中,我们认识了Spark管理磁盘块的组件DiskBlockManager,本文接着来看真正负责磁盘存储的组件DiskStore,以及与它相关的...原创 2019-08-06 22:05:36 · 214 阅读 · 0 评论 -
Spark Core源码精读计划#27:磁盘块管理器DiskBlockManager
目录前言磁盘块管理器DiskBlockManager构造方法与属性成员创建本地存储目录获取存储文件及创建子目录创建临时块文件绑定关闭钩子与关闭总结前言我们前面用4篇文章的时间讲解了Spark存储子系统中的内存部分,其内容相当多,包括内存池MemoryPool、内存管理器MemoryManager(包含两种实现:静态内存管理器StaticMemory...原创 2019-07-29 22:57:46 · 356 阅读 · 0 评论 -
Spark Core源码精读计划#26:内存存储MemoryStore的具体实现
目录前言MemoryEntryMemoryStore构造与属性成员直接写入字节写入迭代器化的数据读取字节与迭代器化的数据淘汰缓存块总结前言差点把这个系列忘了,忙里偷闲接着写。前面我们已经对内存池MemoryPool、内存管理器MemoryManager有了比较深入的了解,接下来要介绍的就是MemoryStore,它负责Spark内存存储的具体事...原创 2019-07-23 22:47:14 · 584 阅读 · 0 评论 -
Spark Core源码精读计划#25:UnifiedMemoryManager——统一内存管理机制
目录前言统一内存管理器UnifiedMemoryManager构造方法计算内存量统一内存管理布局图示申请/借用存储内存申请/借用执行内存总结前言在前文的末尾,我们分析了静态内存管理器StaticMemoryManager的优缺点,并指出统一内存管理器UnifiedMemoryManager能够弥补它的缺点,同时也是目前Spark内存管理的事实标准。...原创 2019-07-15 21:20:19 · 272 阅读 · 0 评论 -
Spark Core源码精读计划#24:StaticMemoryManager——静态内存管理机制
目录前言MemoryManager的初始化静态内存管理器StaticMemoryManager构造方法计算堆内存储/执行内存总量内存申请方法静态内存管理布局图解总结前言在上一篇文章的最后,我们阅读了内存管理器MemoryManager抽象类的源码,并且提到它有两种实现:静态内存管理器StaticMemoryManager、统一内存管理器Unifie...原创 2019-07-11 23:01:27 · 262 阅读 · 0 评论 -
Spark Core源码精读计划#23:与存储相关的内存池及内存管理器的具体实现
目录前言内存池MemoryPool存储内存池StorageMemoryPool构造与属性成员申请内存释放内存内存管理器MemoryManager构造与属性成员内存管理方法总结前言我们用两篇文章的时间搞清楚了Spark存储中的“块”到底是怎么一回事,接下来我们就可以放心来看Spark Core存储子系统的细节了。前面已经提到过,Spark...原创 2019-07-04 22:25:00 · 201 阅读 · 0 评论 -
Spark Core源码精读计划#22:BlockInfoManager与其实现的块锁机制
目录前言BlockInfoManager的成员属性及构造方法BlockInfoManager提供的锁方法获取读锁获取写锁释放锁锁降级删除BlockInfo总结前言在上一篇文章中,我们对与块相关的BlockId、BlockData和BlockInfo有了比较全面的理解。前面已经提到过,块在读写时有锁机制,并且委托给BlockInfoManager来...原创 2019-06-28 23:03:14 · 260 阅读 · 0 评论 -
Spark Core源码精读计划#21:Spark存储中块(Block)的基本实现
目录前言块ID:BlockId块数据:BlockDataBlockData特征ByteBufferBlockDataChunkedByteBuffer简介块元信息:BlockInfo总结前言前面我们用3篇文章的时间讲解了RDD的基础知识,包括其五要素、算子、依赖、分区以及检查点。实际上,与RDD相关的细节还有很多,渗透在之后的研究过程中。在时机合适...原创 2019-06-26 19:41:37 · 369 阅读 · 0 评论 -
Spark Core源码精读计划#20:RDD检查点的具体实现
目录前言RDD类中的检查点方法检查点数据的包装RDDCheckpointDataReliableRDDCheckpointData检查点RDDCheckpointRDDReliableCheckpointRDD总结前言RDD检查点(Checkpoint)是Spark Core计算过程中的容错机制。通过将RDD的数据与状态持久化,一旦计算过...原创 2019-06-20 21:57:46 · 227 阅读 · 0 评论 -
Spark Core源码精读计划#19:RDD的依赖与分区逻辑
目录前言RDD依赖Dependency抽象类及子类窄依赖宽依赖RDD分区器Partitioner抽象类与伴生对象HashPartitioner总结前言按照计划,本文来讲解RDD的依赖与分区器。这两者不仅与之后调度系统的细节(DAG、Shuffle等)息息相关,而且也是面试Spark系大数据研发工程师时经常被问到的基础问题(反正我是会问的)...原创 2019-06-13 22:39:32 · 270 阅读 · 0 评论 -
Spark Core源码精读计划#18:与RDD的重逢
目录前言RDD抽象类概述构造方法与成员属性需要RDD子类实现的方法RDD的五要素RDD继承体系与算子概述RDD的子类转换算子动作算子总结前言在前面的17篇文章中,我们对以SparkContext和SparkEnv为中心展开的Spark Core底层支撑组件有了比较深入的理解,当然有一些重要的组件,会随着整个系列的进行详细讲解到。按照计划...原创 2019-06-12 21:55:17 · 221 阅读 · 0 评论 -
Spark Core源码精读计划#17:上下文清理器ContextCleaner
目录前言初始化与类定义SparkContext中的初始化逻辑ContextCleaner类的属性成员清理任务及弱引用的封装ContextCleaner的执行流程启动清理逻辑总结前言话休絮烦,本文讲解SparkContext初始化的最后一个组件——ContextCleaner,即上下文清理器。顾名思义,它扮演着Spark Core中垃圾收集...原创 2019-06-06 20:10:42 · 306 阅读 · 0 评论 -
Spark Core源码精读计划#16:通过ExecutorAllocationManager实现动态Executor分配
目录前言初始化ExecutorAllocationManager类的成员属性Executor相关配置时长配置计数器、缓存与其他ExecutorAllocationManager具体实现启动调度动态调整逻辑重新计算Executor数量减少Executor增加Executor总结前言按照SparkContext初始化的顺序,接下来就轮...原创 2019-06-01 22:35:11 · 872 阅读 · 0 评论 -
Spark Core源码精读计划 番外篇A:AppStatusStore的底层实现
目录前言App状态数据的键值对存储KVStoreInMemoryStore与InMemoryViewElementTrackingStoreApp状态监听器LiveEntity添加清理触发器监听事件处理方法基于KVStore和监听器包装AppStatusStore总结前言AppStatusStore这个东西是在Spark 2.3.0版...原创 2019-05-28 23:03:30 · 763 阅读 · 0 评论 -
Spark Core源码精读计划#15:心跳接收器HeartbeatReceiver
目录前言HeartbeatReceiver类声明和构造部分成员属性的含义HeartbeatReceiver提供的方法启动监听Executor添加和移除消息处理与回复处理Executor心跳清理超时的Executor总结前言按照SparkContext初始化的顺序,下一个应该是心跳接收器HeartbeatReceiver。由于笔者感染乙...原创 2019-05-21 22:48:48 · 450 阅读 · 0 评论 -
Spark Core源码精读计划#14:Spark Web UI界面的实现
目录前言创建SparkUISparkContext中的操作初始化SparkUIWebUI的具体实现属性成员和Getter方法WebUI提供的attach/detach类方法绑定WebUI到Jetty服务Spark Web UI的展示WebUITab与WebUIPage的定义渲染Spark UI页面总结前言我们已经在Spark...原创 2019-05-14 21:57:11 · 483 阅读 · 0 评论 -
Spark Core源码精读计划#13:度量系统MetricsSystem的建立
目录前言度量系统MetricsSystem类实例化类中的属性成员注册度量来源注册度量目的地度量配置MetricsConfig类初始化设置默认配置及从文件加载配置分拆各实例的配置度量来源Source与目的地SinkSource实现类与示例Sink实现类与示例总结前言前文讲完序列化管理器SerializerManager和广...原创 2019-05-07 21:32:00 · 497 阅读 · 0 评论 -
Spark Core源码精读计划#12:Spark序列化及压缩机制浅析
目录前言SerializerManager类成员属性列表获取序列化器对输入/输出流的包装序列化与反序列化的方法CompressionCodec特征总结前言SparkEnv的初始化过程中,在RPC环境与广播管理器之间还夹着一个,即序列化管理器SerializerManager。本来它并不在这个系列的计划内(因为没有什么比较难的点),但是最近斟酌了一下...原创 2019-04-29 08:57:15 · 328 阅读 · 0 评论 -
Spark Core源码精读计划#11:Spark广播机制的实现
目录前言广播管理器BroadcastManager构造方法参数属性成员初始化逻辑对外提供的方法广播变量TorrentBroadcast属性成员及参数初始化广播变量的写入广播变量的读取广播变量读取的流程图描述总结前言在RPC的领域里摸爬滚打了很长时间,是时候抽身出来看一看其他东西了。顺着SparkEnv初始化的思路继续看,下一个主要组...原创 2019-04-23 22:30:51 · 378 阅读 · 0 评论 -
Spark Core源码精读计划#10:NettyRpcEnv客户端消息发送逻辑
目录前言NettyRpcEnv与消息发送相关的成员clientFactory、fileDownloadFactorytimeoutSchedulerclientConnectionExecutoroutboxes发件箱Outbox相关逻辑OutboxMessage消息处理向Outbox投递消息NettyRpcEnv发送消息的方法ask...原创 2019-04-18 22:33:55 · 363 阅读 · 0 评论 -
Spark Core源码精读计划#9:Spark RPC环境中的消息调度逻辑
目录前言Dispatcher类的属性endpoints、endpointRefsreceiversthreadpoolEndpointDataDispatcher的调度逻辑MessageLoop的实现Inbox消息处理向Inbox投递消息停止Dispatcher总结前言前一段时间忙于发版,不太顾得上这个系列,今天忙里偷一点闲,继续写...原创 2019-04-12 21:06:02 · 267 阅读 · 0 评论 -
Spark Core源码精读计划#8:SparkEnv中RPC环境的基础构建
目录前言RPC端点及其引用RpcEndpointRpcEndpoint继承体系RpcEndpointRefNettyRpcEnv概况创建NettyRpcEnvNettyRpcEnv中的属性成员总结前言在之前的文章中,我们由SparkContext的初始化提到了事件总线LiveListenerBus与执行环境SparkEnv。在讲解Spar...原创 2019-04-06 22:44:34 · 252 阅读 · 0 评论 -
Spark Core源码精读计划#7:Spark执行环境的初始化
目录前言SparkEnv的入口SparkEnv初始化的组件SecurityManagerRpcEnvSerializerManagerBroadcastManagerMapOutputTrackerShuffleManagerMemoryManagerBlockManagerMetricsSystemOutputCommitCoordinator...原创 2019-04-03 22:15:53 · 346 阅读 · 0 评论 -
Spark Core源码精读计划#6:AsyncEventQueue与LiveListenerBus
目录前言异步事件队列AsyncEventQueueeventQueue、eventCount属性droppedEventsCounter、lastReportTimestamp、logDroppedEvent属性started、stopped属性dispatchThread属性dispatch()方法post()方法异步事件总线LiveListene...原创 2019-03-31 22:53:44 · 627 阅读 · 0 评论 -
Spark Core源码精读计划#5:事件总线及ListenerBus
目录前言Spark事件总线概述ListenerBus特征addListener()与removeListener()方法doPostEvent()方法postToAll()方法SparkListenerBus特征SparkListenerInterface与SparkListenerEvent特征总结前言在讲解SparkContext组件...原创 2019-03-28 21:56:03 · 315 阅读 · 0 评论 -
Spark Core源码精读计划#4:SparkContext提供的其他功能
目录前言SparkContext提供的其他功能生成RDD广播变量累加器运行JobSparkContext伴生对象伴生对象中的属性markPartiallyConstructed()方法setActiveContext()方法getOrCreate()方法总结前言前面两篇文章一直在讲SparkContext初始化的内部逻辑,除此之外,...原创 2019-03-26 18:32:02 · 376 阅读 · 0 评论 -
Spark Core源码精读计划#3:SparkContext辅助属性及后初始化
目录前言SparkContext中的辅助属性creationSiteallowMultipleContextsstartTime & stoppedaddedFiles/addedJars & _files/_jarspersistentRddsexecutorEnvs & _executorMemory & _sparkUs...原创 2019-03-23 23:07:07 · 427 阅读 · 0 评论 -
Spark Core源码精读计划#2:SparkContext组件初始化
目录前言SparkContext类的构造方法SparkContext初始化的组件SparkConfLiveListenerBusAppStatusStoreSparkEnvSparkStatusTrackerConsoleProgressBarSparkUI(Hadoop)ConfigurationHeartbeatReceiverSchedule...原创 2019-03-21 20:35:36 · 440 阅读 · 0 评论 -
Spark Core源码精读计划#1:SparkConf
目录前言SparkConf类的构造方法Spark配置项的存储设置配置项直接用Set类方法设置通过系统属性加载克隆SparkConf获取配置项校验配置项总结前言从本文开始,讨论Spark基础支撑子系统的具体实现。首先来看WordCount中最先出现的SparkConf。上一篇已经讲过,SparkConf类负责管理Spark的所有配置项。在我们使...原创 2019-03-19 21:22:48 · 378 阅读 · 0 评论 -
Spark Core源码精读计划#0:Hello Again, WordCount
目录前言Spark WordCountSparkConfSparkContextRDDRDD操作(算子)Spark Web UIApplicationJobStageTaskShuffleDAG与RDD依赖Executor与DriverSpark集群Cluster ManagerWorker总结前言思来想去,还是...原创 2019-03-18 23:31:25 · 536 阅读 · 0 评论