Spark Core 3.3.2 略讲~

在这里插## 标题入图片描述

> 						大家好,我是程序员小羊!

✨博客主页: https://blog.csdn.net/m0_63815035?type=blog

💗《博客内容》:大数据、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

在这里插入图片描述

前言

在这里插入图片描述

一、概述

  1. 简介

    • Apache Spark 是快速通用的分布式计算引擎,诞生于加州大学伯克利分校AMP实验室,基于内存计算,适用于迭代算法(如数据挖掘、机器学习)。
    • 核心优势:中间结果缓存于内存,减少磁盘IO,比Hadoop MapReduce快10-100倍。
  2. 历史

    • 2009年始于伯克利大学,2010年开源,2014年成为Apache顶级项目。
    • 主要创始人Matei Zaharia创立了Databricks公司,推动Spark商业化。
  3. 与MapReduce对比

    特性MapReduceSpark
    编程模型仅Map和Reduce支持多种算子(map、flatMap等)
    运算效率中间结果写入磁盘,IO开销大中间结果存内存,基于DAG优化调度
    适用场景离线计算离线+实时计算
    数据共享依赖HDFS读写内存缓存复用
  4. 核心特点

    • :内存计算+DAG引擎,速度远超MapReduce。
    • 易用:支持Scala、Java、Python等多语言,提供80+高级算法。
    • 通用:一站式支持批处理(Spark Core)、交互式查询(Spark SQL)、流处理(Spark Streaming)、机器学习(MLlib)、图计算(GraphX)。
    • 兼容:可整合Hadoop生态(HDFS、YARN等)。

二、核心组件

  1. Spark Core

    • 核心组件,负责离线批处理,提供RDD(弹性分布式数据集)抽象。
  2. 其他组件

    • Spark SQL:结构化数据查询,支持SQL和DataFrame。
    • Spark Streaming:准实时流处理,基于DStream。
    • MLlib:机器学习库,包含分类、回归等算法。
    • GraphX:图计算库,支持图算法(如PageRank)。

三、运行架构

  1. 核心角色

    • Driver:负责任务调度、DAG生成、与集群通信。
    • Executor:运行Task,缓存数据,位于Worker节点。
    • Cluster Manager:资源管理器(支持Standalone、YARN、K8s等)。
  2. 运行流程

    • 提交应用→Driver申请资源→Executor反向注册→解析代码生成RDD→DAG调度划分Stage→Task分发至Executor执行。
  3. 运行模式

    • Local:本地模式,用于调试,单进程多线程模拟集群。
    • Standalone:Spark自带集群模式,Master-Worker架构。
    • YARN:整合Hadoop YARN,国内主流模式,支持Client/Cluster部署。
    • Kubernetes:容器化部署,支持动态资源调度。

四、核心编程

  1. RDD(弹性分布式数据集)

    • 定义:不可变、可分区、并行计算的分布式数据集合,通过血统(Lineage)实现容错。
    • 五大属性:分区列表、分区计算函数、依赖关系、分区器(可选)、首选计算位置(可选)。
    • 创建方式
      • 内存集合(parallelize/makeRDD
      • 外部文件(textFile/wholeTextFiles
  2. 算子

    • 转换算子(Transformation):懒执行,返回新RDD(如mapfilterreduceByKey)。
    • 行动算子(Action):触发计算,返回结果(如collectcountforeach)。
    • 控制算子cache(内存缓存)、persist(磁盘缓存)、checkpoint(持久化并切断依赖)。
  3. 宽依赖与窄依赖

    • 窄依赖:父RDD分区与子RDD分区一对一(如map),可并行计算。
    • 宽依赖:父RDD分区与子RDD分区多对多(如groupByKey),会产生Shuffle。

五、Shuffle机制

  1. 定义:数据在分区间重新分布的过程,涉及大量磁盘IO和网络传输,是性能瓶颈。

  2. Spark Shuffle类型

    • Hash Shuffle:早期实现,小文件过多,已被淘汰。
    • Sort Shuffle:主流实现,按Key排序,合并小文件,减少IO。
      • SortShuffleWriter:内存排序+溢写合并。
      • BypassMergeSortShuffleWriter:非聚合场景优化,避免排序。
  3. 优化建议

    • 启用Map端预聚合(如reduceByKey替代groupByKey)。
    • 调整缓冲区大小(spark.shuffle.file.buffer)和并行度(spark.default.parallelism)。
    • 压缩Shuffle数据(spark.shuffle.compress)。

六、内存管理

  1. 统一内存管理(默认)

    • 内存分为:存储内存(缓存RDD)、执行内存(Shuffle等计算)、其他内存(用户数据结构)。
    • 动态借用机制:存储与执行内存可互相借用,执行内存可强制收回。
  2. 配置参数

    • spark.memory.fraction:统一内存占JVM堆比例(默认0.6)。
    • spark.memory.storageFraction:存储内存占统一内存比例(默认0.5)。

七、应用场景

  • 离线批处理(日志分析、数据清洗)。
  • 实时流处理(监控告警、实时推荐)。
  • 机器学习(模型训练、预测)。
  • 图计算(社交网络分析、路径规划)。

结尾

Spark Core是Spark生态的基础,通过内存计算、DAG优化和丰富的算子,大幅提升分布式计算效率。其核心是RDD抽象和Shuffle机制,结合多模式部署和内存管理优化,成为大数据处理的主流引擎。实际应用中需根据场景选择合适的运行模式和算子,重点优化Shuffle和内存使用以提升性能。

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92846.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能家居Agent:物联网设备的统一控制与管理

智能家居Agent:物联网设备的统一控制与管理 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的…

汉高携手SAP推出AI驱动的退换货与争议管理解决方案

2025年8月12日,SAP宣布与全球知名的胶黏剂、密封剂及消费品制造商汉高(Henkel AG & Co. KGaA)联合开发了一套基于SAP AI Services的定制化解决方案,用于优化退换货及争议管理流程。该方案旨在通过人工智能自动化索赔相关文件的…

[SC]SystemC中的SC_FORK和SC_JOIN用法详细介绍

SystemC中的SC_FORK和SC_JOIN用法详细介绍 摘要:SystemC是一个开源的C++库(由Accellera和IEEE标准化,IEEE 1666-2011),用于系统级建模、硬件描述和仿真。它扩展了C++以支持硬件概念,如模块(sc_module)、端口(sc_port)、信号(sc_signal)和进程(SC_METHOD、S…

工作流调度(草稿)

串行回复当我加上第三条分支,此时的输出就很混乱了,按理来说最后输出的第二波输出反而先结束了,调用LLM结果的第一波输出最后才输出,这是为什么?当我把LLM节点改为一个不耗时的节点的时候:初步猜测&#xf…

AI不再停留在概念阶段,而是在各行业核心业务场景产生实际价值。随着大模型、边缘计算等技术的突破,AI应用将向实时化、自主化、普惠化方向深度演进。

一、金融领域:智能风控与欺诈检测案例:某银行使用AI实时拦截信用卡欺诈交易,每年减少损失$2400万python# 使用XGBoost构建欺诈检测模型(Python) import pandas as pd from xgboost import XGBClassifier from sklearn.…

GStreamer中解复用器(Demuxer)

在 GStreamer 中,解复用器(Demuxer) 用于分离容器格式(如 MP4、MKV、AVI 等)中的 视频、音频、字幕等流。不同的容器格式需要不同的 Demuxer 元素。 一、常见的 GStreamer Demuxer 元素 1. MP4 / QuickTime 格式 qtdemux 用于解析 MP4(.mp4)、MOV(.mov) 等基于 Quic…

MySQL 存储过程终止执行的方法

在 MySQL 存储过程(PROCEDURE)开发中,我们常常遇到这样的需求: 在执行过程中,如果某些条件不满足,就要立即终止剩余逻辑,避免无效或错误的操作。不同于 Java、Python 等编程语言直接 return 退出…

鲲鹏arm服务器安装neo4j社区版,实现图书库自然语言检索基础

我在dify实施中,发现采用自然语言进行数据库检索效果还不错,我就想起来了图数据库的自然语言检索,以前图书库的算法我不熟悉,这次打算采用这种方式完成。我才用但是鲲鹏920,泰山服务器,2280主机&#xff0c…

小八的学习日记 -- 为什么kafka吞吐量大

1. 「顺序读写」—— 像开高速公路一样爽!​​​​传统硬盘的痛点:​​ 普通硬盘(HDD)像在热闹的菜市场找东西,磁头要来回移动(寻道),随机读写特别慢。​​Kafka 的妙招:…

5G NTN 卫星测试产品

5G NTN 卫星测试产品非地面网络测试解决方案卫星射频节点测试测量相控阵天线应对卫星基础设施测试挑战适用于 5G NTN 卫星测试的高性能解决方案卫星基础设施测试解决方案的优势5G NTN 卫星测试产品FSW 信号与频谱分析仪R&SSMW200A 矢量信号发生器非地面网络测试解决方案 透…

Redis 内存大页(Transparent Huge Pages, THP)与写时复制(COW)性能全解:原理、源码、调优与架构进阶

Redis 内存大页(Transparent Huge Pages, THP)与写时复制(COW)性能全解:原理、源码、调优与架构进阶 Redis 性能瓶颈常见于持久化时 fork 操作的延迟,但系统级“内存大页”(THP)配置…

爬虫与数据分析入门:从中国大学排名爬取到数据可视化全流程

在数据驱动的时代,掌握爬虫技术获取数据、运用数据分析工具处理数据并通过可视化呈现结果,已成为一项重要技能。本文以 “中国大学排名爬取与分析” 为例,带你走进爬虫与数据分析的世界,了解相关基础知识与实操流程。 一、爬虫基…

剧本杀小程序系统开发:推动行业数字化转型新动力

近年来,剧本杀行业呈现出爆发式增长的态势,线下剧本杀店铺如雨后春笋般涌现,成为年轻人休闲娱乐的热门选择。然而,随着行业的快速发展,也暴露出一些问题,如场地限制、人员组织困难、剧本更新缓慢等。这些问…

多重时间聚合算法(MAPA)改进需求预测模型

这篇文章Improving your forecasts using multiple temporal aggregation介绍了“多重聚合预测算法”(MAPA)。它指出传统预测常依赖单一数据频率,但MAPA通过将数据聚合到不同时间粒度(如日、周、月、年)并分别建模&…

【测试】BDD与TDD在软件测试中的对比?

文章目录BDD与TDD在软件测试中的对比与应用引言一、TDD详解:测试驱动开发二、BDD详解:行为驱动开发三、BDD与TDD的对比四、实际项目应用举例结论BDD与TDD在软件测试中的对比与应用 在软件开发领域,测试是确保产品质量的核心环节。作为高级Ja…

SVM实战:从线性可分到高维映射再到实战演练

在支持向量机的分类模型中,我们会遇到两大类模型,一类是线性可分的模型,还有一类是非线性可分的。非线性可分模型是基于线性可分的基础上来处理的。支持向量机比较适合小样本的训练。线性可分如下图所示,有紫色和黑色两类&#xf…

面试问题总结——关于ROS

ROS作为机器人开发中必不可少的一环,总结了一些面试中常见的问题。 目录 1.ROS1 和 ROS2 的核心区别 2.ROS话题间通信和服务端之间通信有什么区别? 3.RViz 可视化ROS的消息发布是一对一还是一对多的? 4.ROS中的机器人指令发布ros topic pub的原理实现,用的ROS1还是ROS2? 5…

软考架构师:数据库的范式

软考架构师:数据库的范式 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得&#xf…

[激光原理与应用-184]:光学器件 - 光学器件中晶体的用途、分类、特性及示例

一、用途光学晶体在光学器件中扮演核心角色,主要应用于以下领域:光学系统调节与控制:制作偏振器、滤光器、透镜等,调节光的传播方向、强度及偏振状态。激光技术:作为激光介质,实现频率转换、调制、偏转及Q开…

深入解析C#并行编程:从并行循环到异步编程模式

在当今多核处理器普及的时代,高效利用计算资源成为开发者必备技能。本文将深入剖析C#中的并行编程利器——任务并行库(TPL)和经典异步模式,助你提升程序性能。 🚀 一、任务并行库(TPL)核心机制 1. Parallel.For:并行化的for循环 通…