三、Spark 架构概述
- 驱动程序和执行器: Spark 采用主从架构 。驱动节点运行应用程序的 main() 函数并维护有关 Spark 应用程序的信息 。执行器节点执行数据处理和写入操作 。
- DAG 调度器: 当触发写入操作时,Spark 的 DAG(有向无环图)调度器将高级转换转换为一系列可以在集群中并行执行的阶段 。
- 任务调度器: 任务调度器在每个阶段内启动任务 。这些任务分布在执行器之间 。
- 执行计划和物理计划: Spark 使用 Catalyst 优化器创建高效的执行计划 。这包括将逻辑计划(要做什么)转换为物理计划(如何做) , 考虑到分区、数据本地性和其他因素 。
(2) 写入任务执行: 每个分区的数据由一个任务处理 。这些任务在不同的执行器之间并行执行 。
写入模式和一致性:
- 对于 overwrite 和 append 模式,Spark 确保一致性,通过管理数据文件的替换或添加来实现 。
- 对于基于文件的数据源,Spark 以分阶段的方式写入数据,先写入临时位置再提交到最终位置,有助于确保一致性和处理故障 。
(4) 分区和文件管理:
- 如果指定了分区,则Spark在写入之前根据这些分区对数据进行排序和组织 。这通常涉及在执行器之间移动数据 。
- Spark 试图最小化每个分区创建的文件数量,以优化大文件大小 , 在分布式文件系统中更有效 。
(6) 优化技术:
- Catalyst 优化器: 为效率优化写入计划,例如最小化数据移动 。
- Tungsten: Spark 的 Tungsten 引擎优化数据序列化和反序列化过程中的内存和 CPU 使用 。
Spark 的写入 API 旨在实现高效和可靠的数据写入,它以复杂的方式编排任务分发、数据序列化和文件管理 。它利用 Spark 的核心组件 , 如 DAG 调度器、任务调度器和 Catalyst 优化器,有效地执行写入操作 。
推荐阅读
- 网络工程师必备:理解VRRP协议及其容错功能
- Vue3 学习笔记,如何理解 Computed 计算属性
- 秦海璐和秦岚的精神状态,完全可以写入内娱教科书,网友:学到了
- Vue3 学习笔记,如何定义事件以及如何理解响应式
- 小学二年级阅读理解的技巧和方法
- 马国明回应郑嘉颖争议言论:他受访前已告知不参加,我能理解
- 《心动2》奇闻cp现状,杨凯雯直言不想办婚礼,有人理解有人不解
- 固态硬盘TBW什么意思,固态硬盘TBW换算成写入量怎么算?
- 阅读理解的技巧和方法有哪些
- 如何理解Java中的多态