2022年4月12日

|NO.Z.00103|——————————|BigDataEnd|——|Hadoop&Spark.V01|——|Spark.v01|Spark 原理 源码|内存管理&堆内内存与堆外内存|

摘要: 一、内存管理 ### 内存管理 ~~~ 在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程: ~~~ Driver为主控进程,负责创建 Spark 上下文,提交 Spark 作业,将作业转化为 Task, ~~~ 并在各个 Executo 阅读全文

posted @ 2022-04-12 13:56 yanqi_vip 阅读(28) 评论(0) 推荐(0)

|NO.Z.00104|——————————|BigDataEnd|——|Hadoop&Spark.V02|——|Spark.v02|Spark 原理 源码|内存管理&静态内存管理&统一内存管理|

摘要: 一、静态内存管理 ### 静态内存管理 ### 静态内存架构 ~~~ Spark 2.0 以前版本采用静态内存管理机制。存储内存、 ~~~ 执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的, ~~~ 但用户可以应用程序启动前进行配置,堆内内存的分配如下图所示: ### 静态内存管理 阅读全文

posted @ 2022-04-12 13:56 yanqi_vip 阅读(37) 评论(0) 推荐(0)

|NO.Z.00102|——————————|BigDataEnd|——————————————————————————————————————

摘要: NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of 阅读全文

posted @ 2022-04-12 13:55 yanqi_vip 阅读(15) 评论(0) 推荐(0)

|NO.Z.00099|——————————|BigDataEnd|——|Hadoop&Spark.V15|——|Spark.v15|Spark 原理 源码|Shuffle详解&Shuffle Writer&Shuffle MapOutputTracker&Shuffle Reader|

摘要: 一、Shuffle Writer ### Shuffle Writer:ShuffleWriter(抽象类),有3个具体的实现: ~~~ SortShuffleWriter。sortShulleWriter 需要在 Map 排序 ~~~ UnsafeShuffleWriter。使用 Java Uns 阅读全文

posted @ 2022-04-12 13:54 yanqi_vip 阅读(40) 评论(0) 推荐(0)

|NO.Z.00101|——————————|BigDataEnd|——|Hadoop&Spark.V16|——|Spark.v16|Spark 原理 源码|Shuffle详解&Hadoop Shuffle 与 Spark Shuffle 的区别&Shuffle优化|

摘要: 一、Hadoop Shuffle 与 Spark Shuffle 的区别 ### 共同点: ~~~ 二者从功能上看是相似的;从High Level来看,没有本质区别,实现(细节)上有区别 ### 实现上的区别: ~~~ Hadoop中有一个Map完成,Reduce便可以去fetch数据了,不必等到所 阅读全文

posted @ 2022-04-12 13:54 yanqi_vip 阅读(34) 评论(0) 推荐(0)

|NO.Z.00096|——————————|BigDataEnd|——|Hadoop&Spark.V12|——|Spark.v12|Spark 原理 源码|Shuffle详解&Spark Shuffle的两个阶段&Spark Shuffle技术演进|

摘要: 一、Shuffle详解 ### shuffle详解 ~~~ 在 Spark 或 MapReduce 分布式计算框架中,数据被分成一块一块的分区, ~~~ 分布在集群中各节点上,每个计算任务一次处理一个分区, ~~~ 当需要对具有某种共同特征的一类数据进行计算时,就需要将集群中的这类数据汇聚到同一节点 阅读全文

posted @ 2022-04-12 13:53 yanqi_vip 阅读(39) 评论(0) 推荐(0)

|NO.Z.00097|——————————|BigDataEnd|——|Hadoop&Spark.V13|——|Spark.v13|Spark 原理 源码|Shuffle详解&Hash Shuffle V1&Hash Shuffle V2 -- File Consolidation|

摘要: 一、Hash Shuffle V1 ### Hash Shuffle V1 ~~~ 相对于传统的 MapReduce, ~~~ Spark 假定大多数情况下 Shuffle 的数据不需要排序,强制排序反而会降低性能。 ~~~ 因此不在 Shuffle Read 时做 Merge Sort,如果需要合 阅读全文

posted @ 2022-04-12 13:53 yanqi_vip 阅读(29) 评论(0) 推荐(0)

|NO.Z.00098|——————————|BigDataEnd|——|Hadoop&Spark.V14|——|Spark.v14|Spark 原理 源码|Shuffle详解&Sort Shuffle V1&Sort Shuffle V2|

摘要: 一、Sort Shuffle V1 ### Sort Shuffle V1 ~~~ 为了更好地解决上面的问题,Spark 参考了 MapReduce 中 Shuffle 的处理方式, ~~~ 引入基于排序的 Shuffle 写操作机制。 ~~~ 每个 Task 不会为后续的每个 Task 创建单独的 阅读全文

posted @ 2022-04-12 13:53 yanqi_vip 阅读(33) 评论(0) 推荐(0)

|NO.Z.00095|——————————|BigDataEnd|——|Hadoop&Spark.V11|——|Spark.v11|Spark 原理 源码|作业执行原理&本地化调度&返回结果&失败重试与黑名单机制|

摘要: 一、本地化调度 ### 本地化调度 ~~~ DAGScheduler切割Job,划分Stage。 ~~~ 调用submitStage来提交一个Stage对应的tasks,submitStage会调用submitMissingTasks, ~~~ submitMissingTasks 确定每个需要计算 阅读全文

posted @ 2022-04-12 13:52 yanqi_vip 阅读(30) 评论(0) 推荐(0)

|NO.Z.00093|——————————|BigDataEnd|——|Hadoop&Spark.V09|——|Spark.v09|Spark 原理 源码|作业执行原理&Task调度|

摘要: 一、Task调度 ### Task调度 ### TaskSetManager 结构如下图所示: ~~~ Task 的调度是由 TaskScheduler 来完成(底层调度)。 ~~~ DAGScheduler 将 Stage 打包到 TaskSet 交给TaskScheduler, ~~~ Task 阅读全文

posted @ 2022-04-12 13:51 yanqi_vip 阅读(22) 评论(0) 推荐(0)

|NO.Z.00094|——————————|BigDataEnd|——|Hadoop&Spark.V10|——|Spark.v10|Spark 原理 源码|作业执行原理&调度策略|

摘要: 一、作业执行原理 ### 调度策略 ~~~ TaskScheduler会先把 DAGScheduler 给过来的 TaskSet 封装成 TaskSetManager 扔到任务队列里, ~~~ 然后再从任务队列里按照一定规则把它们取出来,由 SchedulerBackend 发送给Executor运 阅读全文

posted @ 2022-04-12 13:51 yanqi_vip 阅读(38) 评论(0) 推荐(0)

|NO.Z.00092|——————————|BigDataEnd|——|Hadoop&Spark.V08|——|Spark.v08|Spark 原理 源码|作业执行原理&Stage划分&提交Task|

摘要: 一、Stage划分 ### 提交 Task ~~~ 得到RDD中需要计算的partition ~~~ 对于Shuffle类型的stage,需要判断stage中是否缓存了该结果; ~~~ 对于Result类型的Final Stage,则判断计算Job中该partition是否已经计算完成。 ~~~ 这 阅读全文

posted @ 2022-04-12 13:51 yanqi_vip 阅读(27) 评论(0) 推荐(0)

|NO.Z.00091|——————————|BigDataEnd|——|Hadoop&Spark.V07|——|Spark.v07|Spark 原理 源码|作业执行原理&Stage划分&提交ResultStage|

摘要: 一、Stage划分 ### 提交ResultStage ~~~ submitStage 方法会通过入参 ResultStage 逐层获取父stage, ~~~ 再从最上游stage开始逐步调用TaskScheduler.submitTasks 方法提交task集合, ~~~ 最后才提交ResultS 阅读全文

posted @ 2022-04-12 13:50 yanqi_vip 阅读(23) 评论(0) 推荐(0)

|NO.Z.00089|——————————|BigDataEnd|——|Hadoop&Spark.V05|——|Spark.v05|Spark 原理 源码|作业执行原理&Stage划分&调用dagScheduler.handleJobSumitted|

摘要: 一、Stage划分 ### 调用 dagScheduler.handleJobSubmitted ~~~ # 源码提取说明:DAGScheduler.scala ~~~ # 952行~1015行 // 处理Job的提交 private[scheduler] def handleJobSubmitte 阅读全文

posted @ 2022-04-12 13:49 yanqi_vip 阅读(16) 评论(0) 推荐(0)

|NO.Z.00090|——————————|BigDataEnd|——|Hadoop&Spark.V06|——|Spark.v06|Spark 原理 源码|作业执行原理&Stage划分&handleJobSubmitted => createResultStage|

摘要: 一、Stage划分 ### handleJobSubmitted => createResultStage ~~~ # 源码提取说明: ~~~ # 440行~522行 private def createResultStage( rdd: RDD[_], func: (TaskContext, It 阅读全文

posted @ 2022-04-12 13:49 yanqi_vip 阅读(29) 评论(0) 推荐(0)

|NO.Z.00087|——————————|BigDataEnd|——|Hadoop&Spark.V03|——|Spark.v03|Spark 原理 源码|作业执行原理&Stage划分&DAGScheduler中的重要对象|

摘要: 一、Stage划分 ### Stage划分 ~~~ Spark的任务调度从 DAG 划分开始,由 DAGScheduler 完成 ~~~ DAGScheduler 根据 RDD 的血缘关系构成的 DAG 进行切分,将一个Job划分为若干Stages, ~~~ 具体划分策略是:从最后一个RDD开始, 阅读全文

posted @ 2022-04-12 13:48 yanqi_vip 阅读(32) 评论(0) 推荐(0)

|NO.Z.00088|——————————|BigDataEnd|——|Hadoop&Spark.V04|——|Spark.v04|Spark 原理 源码|作业执行原理&Stage划分&dagScheduler.submit 发送消息|

摘要: 一、stage划分 ### dagScheduler.submit 发送消息 ~~~ # 源码提取说明:DAGScheduler.scala ~~~ # 676行~703行 def submitJob[T, U]( rdd: RDD[T], func: (TaskContext, Iterator[ 阅读全文

posted @ 2022-04-12 13:48 yanqi_vip 阅读(34) 评论(0) 推荐(0)

|NO.Z.00085|——————————|BigDataEnd|——|Hadoop&Spark.V01|——|Spark.v01|Spark 原理 源码|作业执行原理&任务调度概述|

摘要: 一、作业执行原理 ### 任务调度概述 ~~~ 再次简要回顾 Spark 中的几个重要概念: ~~~ Job 是以 Action 方法为界,遇到一个 Action 方法则触发一个 Job ~~~ Stage 是 Job 的子集,以 RDD 宽依赖(即 Shuffle)为界,遇到 Shuffle 做一 阅读全文

posted @ 2022-04-12 13:47 yanqi_vip 阅读(22) 评论(0) 推荐(0)

|NO.Z.00086|——————————|BigDataEnd|——|Hadoop&Spark.V02|——|Spark.v02|Spark 原理 源码|作业执行原理&job触发|

摘要: 一、作业执行原理 ### job触发 ~~~ Action 操作后会触发 Job 的计算,并交给 DAGScheduler 来提交。 二、作业执行原理 ### 作业执行原理 ~~~ Action 触发 sc.runJob ~~~ 触发 dagScheduler.runJob ~~~ spark.lo 阅读全文

posted @ 2022-04-12 13:47 yanqi_vip 阅读(22) 评论(0) 推荐(0)

|NO.Z.00084|——————————|BigDataEnd|——————————————————————————————————————

摘要: NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of 阅读全文

posted @ 2022-04-12 13:46 yanqi_vip 阅读(11) 评论(0) 推荐(0)

导航