Spark学习之路-源码
文章平均质量分 93
跟随作者的脚步,一步一步追踪spark的源码
天心有情
这个作者很懒,什么都没留下…
展开
-
Spark自定义集合简单介绍
集合浅析文章目录集合浅析AppendOnlyMapBitSetCompactBufferSizeTrackingAppendOnlyMapSizeTrackerExternalAppendOnlyMapMedianHeapOpenHashMapOpenHashSetPartitionedAppendOnlyMapPartitionPairBufferPrimitiveKeyOpenHashMapPrimitiveVectorPrimitiveVectorAppendOnlyMap简单介绍Append原创 2021-01-21 15:01:24 · 305 阅读 · 1 评论 -
Spark涉及的设计模式-创建型-单例模式
Spark涉及的设计模式-创建型-单例模式文章目录Spark涉及的设计模式-创建型-单例模式单例模式的作用在spark中使用的例子单例模式的作用单例模式主要是避免了一个全局使用的类频繁地创建和销毁。当想要控制实例数据节省系统资源的时候可以使用。在java中单例模式有很多种写法,比如什么饱汉、饿汉,双重检查等等但是在scala语言中这个完全不需要什么这么多花里胡哨的,仅仅需要一个伴生对象。伴生对象就是单例模式的。伴生对象采用object声明在spark中使用的例子在spark中简单举一个例子p原创 2020-08-04 11:04:44 · 524 阅读 · 0 评论 -
spark涉及的设计模式-创建型- 建造者模式
spark涉及的模式-创建型- 建造者模式文章目录spark涉及的模式-创建型- 建造者模式定义:该模式的应用建造者模式角色结构具体实现定义:将一个复杂的构造和他的表示分离,是的相同的构建过程可以创建不同的表示该模式的应用该模式主要关注于各种部件的组装问题。回想Spark1.X时代,那是想要使用一个Spark环境就必须创建一个SparkConf,然后将它传入一个SparkContext的构造方法内。当然了还有sqlContext和hiveContext。这些由用户自行创建都是比较凌乱的,没有进行原创 2020-07-31 14:39:59 · 368 阅读 · 0 评论 -
Spark涉及的设计模式-创建型-原型模式
Spark涉及的设计模式-创建型-原型模式文章目录Spark涉及的设计模式-创建型-原型模式定义使用原型模式在Spark中的应用定义使用原型实例指定创建对象的种类,并通过拷贝这些对象的原型创建新的对象。使用原型模式主要用于对象的复制,无论时java和scala都会提供一个Cloneable接口。他们的左右只有一个,就是实现了该接口之后可以调用对象的clone方法。其实scala的cloneable接口也是继承的java的cloneable的接口。package scala/** * Cl原创 2020-07-30 15:57:17 · 409 阅读 · 1 评论 -
Spark涉及的设计模式-创建型-工厂方法模式
设计模式-创建型-工厂方法模式文章目录设计模式-创建型-工厂方法模式工厂接口工厂实现客户端为什么不用抽象工厂模式说在前面的话:说到工厂方法模式不得不说的就是简单工厂模式(又名静态方法模式),简单工厂模式就是他的行为就很简单,就是定义一个接口用来创建对象。但是它创建工厂类的时候是通过客户端传入参数进行决定创建什么工厂的。这样如果需要添加一个工厂那么就需要改变这个工厂类。这样就违背了开闭原则。而工厂方法模式则不通,他是通过客户端就决定实例化哪个工厂进行决定的,这样需要修改的是客户端和添加新的工厂类这里我原创 2020-07-30 15:09:44 · 283 阅读 · 0 评论 -
Spark3.0消息发送经历了什么
Spark3.0消息发送经历了什么首先创建一个RpcEnv变量,用来存储各种信息 val rpcEnv = RpcEnv.create(systemName, bindAddress, advertiseAddress, port.getOrElse(-1), conf, securityManager, numUsableCores, !isDriver)该变量主要调用create方法,最后调用到NettyRpcEnvFactory的create方法,以工厂模式创建RpcEnv原创 2020-07-23 16:20:51 · 198 阅读 · 0 评论 -
SparkRPC源码分析之OneWayMessage消息
SparkRPC源码分析之OneWayMessage消息文章目录SparkRPC源码分析之OneWayMessage消息OneWayMessageOneWayMessage首先看一下OneWayMessage的定义public final class OneWayMessage extends AbstractMessage implements RequestMessage 什么是...原创 2019-07-01 21:59:18 · 2038 阅读 · 0 评论 -
SparkRPC源码分析之RpcRequest、RpcResponse和RpcFailure消息
SparkRPC源码分析之RpcRequest、RpcResponse和RpcFailure消息文章目录SparkRPC源码分析之RpcRequest、RpcResponse和RpcFailure消息RpcRequestRPCResponse 和RpcFailure 消息RpcRequest和上一个ChunkFetchRequest消息一样。入口都是从TransportRequestHand...原创 2019-07-01 20:58:30 · 858 阅读 · 0 评论 -
SparkRPC源码分析之ChunkFetchRequest、ChunkFetchSuccess和ChunkFetchFailure消息
StreamManager文章目录StreamManager作用方法ChunkFetchRequest消息ChunkFetchSuccess和ChunkFetchFailure消息作用 StreamManager用来从一个流中提取单个的块。这会在TransportRequestHandeler中用来相应fetchChunk请求。流的创建超出了传输层的范围,但是一个给定的流保证了仅被一个客...原创 2019-06-14 08:58:00 · 1173 阅读 · 0 评论 -
SparkRPC源码分析之RPC管道与消息类型
SparkRPC源码分析之RPC管道与消息类型我们前面看过了netty基础知识扫盲,那我们应该明白,ChannelHandler这个组件内为channel的各种事件提供了处理逻辑,也就是主要业务逻辑写在该组建内。Spark的RPC也不会例外,因此我们看一下Spark的Handeler怎么调用的。在TransPortClientFactory初始化客户端之前有一条代码为TransportChann...原创 2019-05-17 14:43:26 · 461 阅读 · 0 评论 -
SparkRPC源码分析之TransportServer
SparkRPC源码分析之TransportServer在上一篇博客中写到了Transprotclient的初始化,也就是那个很重要的currentMap里面数据的初始化,本次分析服务端初始化过程。先看构造方法的源代码//创建一个TransportServer,绑定到给定主机和给定端口,(如果为0)绑定到任何可用的主机和端口。//如果不想绑定到任何特殊主机,请将“hostToBind”设置...原创 2019-05-09 18:17:56 · 192 阅读 · 0 评论 -
SparkRPC源码分析之TransportClientFactory
TransPortClientFactoryTransportClientFactory是创建TransportClient的工厂方法。该类是使用Java语言写的不是scala,主要方法为createClient方法.这里的是简单工厂模式,一般简单工厂模式使用的是if-else逻辑进行判断先看他的构造方法public TransportClientFactory( Transp...原创 2019-05-08 19:47:18 · 376 阅读 · 0 评论 -
SparkRPC源码分析之ConfigProvider
Spark配置信息Spark的配置信息读取一般都会通过ConfigProvider类来完成,该类是一个抽象类,它的一系列子类实现了从各种渠道中读取配置信息到内存中[Map]这里是一个javaMap不是ScalaMap代码如下所示package org.apache.spark.internal.configimport java.util.{Map => JMap}import ...原创 2019-05-07 18:55:29 · 285 阅读 · 0 评论 -
SparkRPC源码分析之Netty基础知识扫盲
SparkRPC源码分析之Netty基础知识扫盲在上面三篇文章中,我们介绍了Spark如何创建一个客户端和如何创建一个服务端。那么这些东西是什么呢?这就需要了解netty,而我本人是对netty不了解的。因此简单地看了一下netty需要的东西,写了以下简单的netty入门级程序。仅供参考服务端代码:import org.jboss.netty.bootstrap.ServerBootstra...原创 2019-05-10 16:53:38 · 237 阅读 · 0 评论