spark 关于spark:Spark-Task的执行过程二-UnsafeShuffleWriter 上一篇讲了BypassMergeSortShuffleWriter实现形式,并且晓得抉择BypassMergeSortShuffleWriter的时候,分区数是不能超过200的,因为每次执行的时候,会依据分区数量,学生成临时文件,如果分区数很多的话,那就会很有很多的临时文件,磁盘性能就十分不好。UnsafeShuffleWriter也是不具备聚合性能的,然而他应用Tungsten…
spark 关于spark:Spark-Task的执行过程一 后面讲了Task的创立、提交,以及对Task进行资源调度与调配,对于Task的实现细节一笔带过,所以这篇开始解说Task的执行过程。Task又分为ShuffleMapTask和ResultTask,咱们离开来讲。
spark 关于spark:Spark-Task的资源分配 在上一篇中,咱们晓得了每个stage会依据分区数,把数据进行切分,并生成Task,也就是说,有多少个分区数,就有多少个Task,这些task会封装在TaskSet中。咱们持续上篇的流程,从stage0开始。stage0有4个分区,上面是stage0对应的TaskSet 0.0,TaskSet 0.0里有4个Task。TaskSet 0.0提交后,会封装成TaskSetManager,这个Ta…
spark 关于spark:Spark-TaskSet提交 stage切分后,就会创立一个Job,所以在一个Application中,如果有多个action算子,那就有多少个Job,每个Job依据shuffle依赖,切分成多个stage。最初生成的这个job会把援用给finalStage,也就是上篇的stage4里。Job生成后,就开始提交stage,咱们以stage切分的流程往下讲。次要是先找到未提交的stage,而后依据stage的分…
spark 关于spark:Spark-stage切分 本文以宽依赖和窄依赖的例子来解说stage切分的过程,这里跟之前不一样的是,join操作是宽依赖。为了看的更不便一些,咱们把上一篇的最终的图片简化一下,能够看到多了4个灰色的RDD,这是因为有些转换,比方join,外面还有做一些其余的转换操作。数据的流程是右边到左边的,stage的切分流程是相同的,是从左边到右边。主…
spark 关于spark:Spark-宽依赖和窄依赖 后面Standalone模式下的Master对资源的调度,是第一层调度。为了前面第二层调度解说,这里先用一个例子作为铺垫,也顺便讲一下宽依赖和窄依赖。所波及的RDD应用之前曾经讲过了,这里不做赘述。
spark 关于spark:Spark-Worker退出怎么办 如果是被动退出,那Worker在退出之前,这里叫worker_1,会杀死本人每个Executor过程。Executor异样退出的流程之前曾经讲过了。咱们在Master和Worker晓得,Worker会定期的向Master发送心跳,如果worker_1退出,那咱们就能够心跳信息中就能够发现,超过60秒没有心跳的Worker此时可能异样退出了,所以就会把这个worker_1的…
spark 关于spark:Spark-Executor异常退出怎么办 当Worker创立Executor的时候,会启动一个线程来创立这个Executor,并且期待获取Executor过程的退出状态。如果Executor异样退出,这个线程就会晓得,而后就会发信息告知Worker。Worker收到音讯后,就会把这个音讯转发给Master。这个音讯会携带Application的ID和Executor的ID。Master收到音讯后,就会依据Application的ID…
spark 关于spark:Spark-Standalone部署模式下Application执行完了怎么办 在后面的文章中曾经晓得,Application既占用了Master的资源,也占用Worker里的Executor资源。当Application运行完后这些资源是都要开释的。
spark 关于spark:Spark-Standalone部署模式 某个能够连Spark集群的服务器,通过spark-submit的shell脚本,启动SparkSubmit的时候,就会创立一个Application。这个Application里会有ClientEndpoint和集群管理器进行对话,还有一个DriverEndpoint,用于Worker的Executor进行对话,所以咱们这个Application是和SparkSubmit同一个过程的。