自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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——AIO

AIO不再需要轮询操作,它使用了异步非阻塞的方式,极大提高了性能Server端:

2020-01-05 20:01:50 104

原创 初识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

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除