随笔分类 -  Spark

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