Spark2.1内部原理剖析与源码阅读、程序设计与企业级应用案例

1、本文目标以及其它说明:

        本文或者本次系列主要是弄清楚spark.2.2.0版本中,spark core 包下rpc通信情况。从源代码上面看到,底层通信是用的netty,因为本系列以及本文是专项学习spark,故netty只会涉及到不会去讲解。在读源码前考虑到spark的体系结构有spark core / spark sql / spark streaming / spark machinelearning / spark graphx ,所有的都是依赖于spark core ,所以先从spark core 开始研究,又因为看源码的过程中脑子里老是在想底层通信是怎么回事,故首先就是从一个子项目的底层模块一个一个地突破。整体研究思路是模块中的数据结构,以及数据结构之间是什么关系,以及数据结构之间的算法。即(软件 = 数据结构 + 算法)

2、rpc 包下面的数据结构说明

        研究思路说明: 因为软件 = 数据结构+算法。算法是基于数据结构,所以会先研究数据结构。先从包里面最简单的数据结构开始,由简单到复杂的数据结构。包括数据结构签名、作用、以及封装抽象的类型等等。

       a: 样例类 RpcAddress:封装的是 IP+端口。

联想计算机网络:

    1 、由计算机网络可以知道,通过IP+端口我们就能够定位到网络中具体的某个进程,并能够和她通信,建立联系。

    2、因为是spark的RPC,通信用的协议是spark专有的。类比于HTTP协议

private[spark] case class RpcAddress(host: String, port: Int) {

  def hostPort: String = host + ":" + port

  /** Returns a string in the form of "spark://host:port". */
def toSparkURL: String = "spark://" + hostPort

  override def toString: String = hostPort
}

猜你喜欢

转载自www.cnblogs.com/abc1168/p/9610247.html
今日推荐