标签:模型 shuf patch receiver 学习 box 一个起点 不同 hdr
========== Spark 通信架构 ==========
========== Spark 脚本解析 ==========
1、start-slave.sh 用于启动 slave 节点,最终启动的类是 org.apache.spark.deploy.worker.Worker 类。
2、start-master.sh 用于启动 master 节点,最终启动的类是 org.apache.spark.deploy.master.Master 类。
3、spark-submit 和 spark-shell 最终都会调用 spark-class 脚本,通过 spark-class 脚本启动相对应的入口类。
========== Spark standalone 模式启动流程 ==========
========== Spark 应用提交流程 ==========
========== Spark shuffle 过程 ==========
MapReduce Shuffle 过程:
1、在 spill(刷写)阶段,数据直接写入到 kvbuffer 数据缓冲器中。会写两种类型的数据。一种是 kvmeta 数据,用于存放分区信息、索引信息;另一种是 (k, v) 对类型的数据,是实际的数据。
2、会以一个起点反向来写,即当遇到 spill 进程启动的时候,写入点会重新进行选择。
Hash Shuffle 过程:
1、未优化版本,每一个 task 任务都会根据 reduce 任务的个数创建对应数量的 bucket,bucket 其实就是写入缓冲区,每一个 bucket 都会存入一个文件,这个文件叫做 blockfile。最大的缺点是:产生的文件过多。
2、在优化版本中,主要通过 consolidation 这个参数进行优化,实现了 ShuffleFileGroup 的概念,不同批次的 task 任务可以复用最终写入的文件,来整体减少文件的数量。
Sort Shuffle 过程:
1、Sort Shuffle 整个过程的实现和 MapReduce Shuffle 过程类似。
2、Bypass 机制:Hash Shuffle 在 reduce 的数量比价少的时候性能要比 Sort Shuffle 要高,所以如果你的 reduce 的数量少于 Bypass 定义的数值的时候,Sort Shuffle 在 task 任务写出的时候会采用 Hash 方式,而不会采用 ApplyOnlyMap 以及排序的方法。
========== Spark 内存管理与分配 ==========
1、内存分配模式:静态分配和统一分配。静态分配就是固定大小分配,统一分配就是存储区和 Shuffle 区可以动态占用。
2、有几种内存配置模式:
(1)other 区,一般占用 20% 的内存区域,主要是用于代码运行以及相关数据的运行。
(2)Execution 区,这个区域一般占用 20% 的内存区域,主要用于 Shuffle 过程的内存消耗,通过 spark.shuffle.memeoryFaction 参数进行控制。
(3)Storage 区,这个区域主要用于 RDD 的缓存,通过 spark.storage.memeoryFaction 参数进行控制。
3、spark 目前支持堆内内存和堆外内存,堆外内存主要用于存储序列化后的二进制数据。
========== Spark 部署模式 ==========
大数据技术之_19_Spark学习_06_Spark 源码解析小结
标签:模型 shuf patch receiver 学习 box 一个起点 不同 hdr
原文地址:https://www.cnblogs.com/chenmingjun/p/10803374.html