- 博客(13)
- 问答 (2)
- 收藏
- 关注
原创 初识Java IO——NIO-reactor模式
reactor和之前Single Thread模式不同的地方在于:Single Thread需要selector进行Client的连接还有接下来的read,writer等操作, 而reactor模式只需要selector进行Client的连接操作,其他的类似read write操作交给手下的worker来进行Server端:...
2020-01-05 20:03:54 139
原创 初识JAVA IO——BIO
同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。server端程序可见效率非常之低以上程序需要注意的是:正常情况下不能直接throws IOException,因为如果直接throws的话程序中断,但是通道没有正常关闭Client端程序...
2020-01-05 20:00:15 128
原创 初识JAVA IO——NIO Single Thread
初识JAVA IO——NIO Single ThreadNIO Single ThreadNIO Single Thread同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。Server端代码:上面的Key是Selector放上去的在handle方法中使用了register,这...
2020-01-05 19:56:08 235
原创 Spark RDD的Action执行过程——Task剖析
Pool会依次执行TaskRunner下面就分析TaskRunner中的run方法这里调用了task的run方法这里调用了runTask方法,这个方法是一个抽象方法,有两种实现,一个是ShuffleMapTask的实现,另一个是ResultTask的实现首先看一下比较复杂的ShuffleMapTask这里的注意点在于writer.write方法中的rdd.iterator()...
2019-07-22 21:07:54 264
原创 Spark RDD的Action执行过程——Executor对task的执行原理分析
当master在接收到RegisterApplication消息后会向worker发送LaunchDriver和LaunchExecutor消息来分别启动Driver和Executor。实际上这里启动Executor是指的启动CoarseGrainedExecutorBackend进程,而Executor只是CoarseGrainedExecutorBackend的内部的对象。下面是backen...
2019-07-17 22:31:35 295
原创 Spark RDD的Action执行过程——TaskScheduler在executor上启动task的分析
DAGScheduler中在submitMissingTasks方法中调用了TaskScheduler的submitTasks方法,作为入口我们开始分析TaskScheduler的实现类TaskSchedulerImpl看一下传入的TaskSet的结构每一个Stage有可能会产生多个Tasks,Tasks数量由Stage的分区数决定的taskSet级别的信息管理reviveOffer...
2019-07-16 22:36:51 318
原创 Spark RDD的Action执行过程源码分析——宽依赖与窄依赖stage划分以及stage的submit
通过RDD的foreach方法触发Action调用SparkContext的runJob方法DAGScheduler的runJob方法DAGSchedulerEventProcessLoop接收到JobSubmittedhandleJobSubmitted分析分析调用的submitStage方法,这里只要就是对父stage的划分(宽依赖和窄依赖)分析getMissing...
2019-07-15 20:57:12 190
原创 Spark Worker类的分析——Driver在Worker上的启动
Driver在Worker上的启动是依靠launchDriver方法,launchDriver方法内部会启动一个新线程创建Driver的工作目录,并且使用ProcessBuilder来启动Driver从上面的结构图我们可以看到launchDriver主要是通过DriverRunner类内部方法对driver进行启动我们看一下DriverRunner的start方法,在新线程中对driver进...
2019-07-13 15:01:22 261
原创 Spark Master中的通信过程——launchDriver方法为例(下)
下面分析一下remote RPC分析postToOutbox方法从这个HashMap我们可以明白,每一个Client对应一个Outbox.因为每一个address都会有一个不同的targetOutbox如果NettyRpcEnv处于stop状态,就接受不到我们的message了,这样我们就无法产生这个Client对应的Outbox了,于是上面代码中就在outboxes中对这个addres...
2019-07-08 21:02:56 119
原创 Spark Master中的通信过程——launchDriver方法为例(上)
以Spark 2.x为标准(通信框架使用Netty)org.apache.spark.deploy.master 包下的 launchDriver方法workerInfo中的endpoint就是RpcEndpointRef对象RpcEndpointRef是一个抽象类在Spark1.x的时代Spark底层使用Akka进行通信的, 到了2.x就换成了更加好用的Netty框架下面我们...
2019-07-06 22:35:50 193
原创 Spark Master类源码的分析——Master的主备切换过程
这篇文章主要是对Master主备切换过程的源码进行分析,分析了主备切换的详细实现流程首先分析completeRecovery()方法:private def completeRecovery() { // Ensure "only-once" recovery semantics using a short synchronization period. //判断该Master的状态(...
2019-07-02 11:04:04 155
转载 Spark-core原理初步学习小结[一]
Spark-core原理初步学习小结[一]RDD Objects 阶段RDD的概念DAG Scheduler 阶段切分Stage的标准切分Stage的原因切分Stage后输出TaskScheduler 阶段Work 阶段RDD Objects 阶段在这个阶段主要对各个RDD进行构建(对各个规则进行定制,实现完整执行流程),生成DAG(有向无环图)DAG是有边界的:开始(通过SparkCon...
2018-12-19 20:26:46 244
空空如也
使用DQN实现推荐系统,如何训练模型?
2020-03-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人