之前我们写了Akka的RPC通信,那么为什么Spark底层要这样设计呢?
因为以后我们要玩的是分布式并行计算,我们需要将任务提交到集群上执行。那么这个任务在Master上执行还是在Worker上执行?答案是在Worker上执行,严格的来说是在Worker的子进程上执行,就好比我们之前使用的yarn,yarn上有nodemanager,而任务并不在nodemanager上执行,而是在nodemanager启动的yarnchild上执行。Worker一开始就将自己的资源注册到Master上,然后Master就知道哪些Worker上有资源。然后Master就将计算任务分配到某台或某几台Worker上。
在spark2.0已经将Akka移除,因为Akka的扩展性并不是很好,于是又用Netty重新写了一套。
接下来我们来看看Netty的思想:
什么是NIO,我们之前写的Socket就是传统的IO,传统的IO是有问题的。NIO就是new IO(新IO)它的异步性要比传统IO强大。
接下来我们开始写Netty的RPC:
我们要写N