随笔分类 - Spark
摘要:1.AQE(Adaptive Query Execution) 自适应查询执行 默认不开启,通过设置spark.sql.adaptive.enabled=true开启 主要包括三方面: Join策略调整:运行时动态的将原来的Shuffle Join调整为Broadcast Join,依赖Shuffl
阅读全文
摘要:1.大数据处理框架 1.1 四层结构 大数据处理框架一般可以大致分为四层结构: 用户层 分布式数据并行处理层 资源管理与任务调度层 物理执行层 下面分别就四层进行详细解释。 1.1.1 用户层 主要包括: 输入数据:考虑数据如何高效读取(减少磁盘I/O)、批式和流式不同的读取方式等 用户代码 配置参
阅读全文
摘要:Shuffle过程主要分为Shuffle write和Shuffle read两个阶段,2.0版本之后hash shuffle被删除,只保留sort shuffle,下面结合代码分析: 1.ShuffleManager Spark在初始化SparkEnv的时候,会在create()方法里面初始化Sh
阅读全文
摘要:1.通过spark-submit脚本提交spark程序 在spark-submit脚本里面执行了SparkSubmit类的main方法 2.运行SparkSubmit类的main方法 3.调用doSubmit方法 4.调用submit方法 在submit方法里调用doRunMain方法,最终调用ru
阅读全文
摘要:Spark的配置类,通过ConcurrentHashMap来存储配置,泛型为String类型 private val settings = new ConcurrentHashMap[String, String]() Spark配置可以通过3种方式获取: 1.系统默认加载 如果loadDefaul
阅读全文
摘要:RDD的多个Partition由不同Task处理,Task分为shuffleMapTask和resultTask 1.Task解析 Task是计算的基本单位,一个Task处理RDD的一个Partition,Task运行在Executor上,Executor位于CoarseGrainedExecuto
阅读全文
摘要:1.原理说明 有向无环图:如果一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图是一个 有向无环图(DAG图) 在Spark中对任务进行排队,形成一个集合就是DAG图,每一个顶点就是一个任务,每一条边代表一个依赖关系 通过DAG可以对计算流程进行优化,比如将单一节点的计算操作合并,对涉及sh
阅读全文
摘要:1.窄依赖 窄依赖表示一个父RDD中的Partition最多被子RDD的一个Partition使用 窄依赖分为两种: 一种是一对一的依赖关系,比如map、filter等(OneToOneDependency) 另一种是范围依赖关系,比如union(RangeDependency) OneToOneD
阅读全文
摘要:1.对数据存储自动进行内存和磁盘的切换 Spark优先将数据放入内存中,如果内存不够,放到磁盘里面,如果实际数据大于内存,需要考虑数据放置的策略和优化的算法 2.基于Lineage的容错机制 Lineage基于Spark RDD的依赖关系,对于每个操作只需要关联父操作,每个分片之间互不影响,出现错误
阅读全文
摘要:1.定义 RDD是只读的记录分区的集合,是一种基于工作集的应用抽象 创建RDD的方式有两种: 从驱动程序中的集合中并行创建 从外部数据集创建 2.底层存储原理 每个RDD的数据以Block的形式存储在多个机器上,对于每个Executor都会启动一个BlockManagerSlave,并且管理一部分B
阅读全文
摘要:在Spark中要启用反压机制,需要将配置spark.streaming.backpressure.enabled设置为true,默认为false 具体实现 1.RateController 该类继承StreamingListener,是一个监听器 /** * A StreamingListener
阅读全文

浙公网安备 33010602011771号