spark基础内容总结

spark是master-worker结构的,master负责资源调度,类似RM,worker掌握所在节点的信息,类似于NM。

执行时候物理结构分为driver-executor,

driver负责执行mian方法,将程序转为job;负责在executor之间调度任务;负责在UI上展示运行情况

executor是一个工作节点,负责在spark作业中运行任务,并返回任务信息给driver,任务键互相独立,通过自身的blockManager为用户应用程序中要求缓存的rdd提供内存式存储,rdd存在executor内,因此运行快。

分别从逻辑结构和物理结构上阐述spark中任务划分方式。

逻辑结构:

job-stage-rdd

1个action算子划分为一个job(例如count)

1个宽依赖划分为一个stage(例如group by 、join 向上合并),1个stage的计算可能被分配到多个task上执行,但是一个task只能计算一个stage的逻辑

1个算子生成一个rdd

1个stage可能有多个rdd组成,具体看算子类型

物理结构:master-worker-driver-executor-task

task是spark的最小执行单元,一个executor可能同时运行多个task

**

spark常见参数设置原则:

**
1.核数设定 set spark.executor.cores=3

cpu核数一般设置为2-4,cores代表的是并行度,一般起码要2以上以充分使用cpu资源的并行特性。

2.内存设定 set spark.executor.memory=12G-20G

内存可根据集群资源情况设定,设定原则是memory/cores=4G,如果遇到部分task spill情况可以适当调整比例值,增加单核分配到的内存以避免spill

3.executor数量设定

set spark.executor.instances=xxx

executor设置原则一般需要根据数据量来确定,数量设置为总数据量/(coresexecutors) =300-500MB
一般来说,可以将 spark.executor.instances 参数值设置为集群中 Worker 节点数量的 2 到 3 倍
**cores
executors 计算的是 Spark 应用程序可以同时运行的 最大 Task 数量**

set spark.sql.shuffle.partitions=100;设置的是shuffle阶段的并行度,但是这个值一般不设定固定,存在数据倾斜时候用以下参数更合适。

一般来说shuffle阶段会设置

set spark.sql.adaptive.shuffle.enabled=true;

set spark.sql.adaptive.shuffle.targetPostShuffleInputSize=

10GB,具体数值根据计算资源情况以及任务情况设定,最大不能超过单个executor分配的内存容量

argetPostShuffleInputSize参数的作用:

指定了每个 Reducer 读取 Shuffle 输出的目标数据量。

Spark 会尽量将每个分区的输出数据量控制在这个目标值附近,以避免数据倾斜和提高并行度。

对于资源密集型任务,可以适当提高 spark.executor.instances 参数值。

资源密集型任务对 计算资源的利用率 较高,通常需要多个 CPU 核、大量内存和高带宽网络。

相关推荐
IT学长编程9 分钟前
计算机毕业设计 基于用户评论主题挖掘的旅游景点推荐系统 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·python·django·毕业设计·数据可视化分析·旅游景点推荐系统·基于用户评论主题挖掘
才聚PMP18 分钟前
深陷技术内卷难突围?AI+项目管理开辟增值新赛道!
大数据·人工智能
飞飞传输20 分钟前
机器人行业数据流转深度研究:内外网数据摆渡平台应用现状与趋势
大数据·运维·安全
长谷深风11125 分钟前
Agent 何时该 Replan:五个关键判断
java·大数据·开发语言·ai agent·ai智能体·agent设计·clarify机制
数据库小学妹43 分钟前
集群与分布式啥区别?从主从集群到分布式实战
分布式·分布式数据库·数据库架构·集群·分库分表·主从集群·集群与分布式
兴趣使然黄小黄1 小时前
【AI-agent】让 AI 输出可依赖:LLM 工程化的四道防线
大数据·人工智能
江畔柳前堤1 小时前
AgentScope 设计与原理全解:从消息原语到分布式智能体工程底座
大数据·人工智能·分布式·目标检测·机器学习·语言模型·架构
Elastic 中国社区官方博客1 小时前
跳过有状态的 OTel Collector:Elasticsearch 9.5 原生存储两种指标时间类型
大数据·人工智能·elasticsearch·搜索引擎·重构·全文检索
萧瑟余晖1 小时前
Java深入解析篇三十四之分布式事务
java·开发语言·分布式
2301_780356701 小时前
【技术解码】全视通“物联数据中台”如何打通医养结合全链路?
大数据·人工智能·物联网