Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
spark运行原理简单介绍和一些总结_创想鸟

spark运行原理简单介绍和一些总结

大家好,又见面了,我是你们的朋友全栈君。

一、运行原理

来看一个流程图:

spark运行原理简单介绍和一些总结

解释如下:

构建spark Application运行环境sparkcontext向资源管理器注册sparkContext向资源管理器申请运行Executor(执行器)资源管理器分配executor资源管理器启动executorexecutor发送心跳至资源管理器sparkContext构建DAG图将DAG图分解成stage(taskSet)把stage(taskSet)发送给TaskSchedulerExecutor向sparkContext申请tasktaskScheduler将task发送给Executor运行同时,sparkContext将应用程序代码发送给Executortask在executor上运行,运行完毕释放所有资源。

二、

spark运行原理简单介绍和一些总结

在上图中,箭头交叉处形成一个stage,其中伴随有shuffle操作。这些算子(如groupby、join)属于Action中的算子,而map、union则属于Transformation中的算子。

理解算子的含义:

Hadoop只有map和Reduce两个算子,而Spark提供了许多算子:

spark运行原理简单介绍和一些总结

如上图所示,一个Job被拆分成若干个stage,每个stage执行一些计算,产生一些中间结果,最终生成这个Job的计算结果。每个stage是一个taskset,包含若干个task。Task是Spark中最小的工作单元,在一个executor(执行器)上完成一个特定任务。

三、窄依赖与宽依赖的判断方式,这里提供三种:

窄依赖:一个父RDD的一个partition最多被一个子RDD的一个partition使用。宽依赖:一个父RDD的一个partition被多个子RDD的partition使用。是否会发生shuffle操作,宽依赖会发生shuffle操作。总结1、2,一个partition的结果只被一个子partition使用,相当于没有发生shuffle操作。也可以看有没有发生combine操作,不同的partitions被多个子RDD使用,必然发生合并操作。

四、理解RDD是什么:全名“弹性分布式数据集”

可以类比理解为,HDFS上文件分片后的状态。例如,使用splitline()按行分割,则一行就是一个RDD。RDD是不可改变的分布式集合对象,因为它是加载的文件,显然我们不能对HDFS上的文件进行增删改操作。如val lines=sc.textFile("/home/aa.txt"),这里的lines即为RDDs。

如果aa.txt文件很大,按照HDFS的文件写入方式,我们知道aa.txt会被按照64MB的块大小放到不同的datanode节点上。在执行算子时,在各个节点上分别处理各自的数据,但我们操作的对象都是lines这个变量,因此lines也是这些节点数据的集合,即RDDs。

五、RDDs创建的两种方式:1. val rdds=sc.textFile();2. 并行化处理,创建一个类似Array的容器,val Rdds=sc.parallelize(Array(1,2,3,4),4)(注意,第二个参数4是partitions的个数)。

六、RDD.persist():持久化

默认情况下,每次在RDDs上进行action操作时,Spark都会重新计算RDDs。如果想重复利用一个RDDs,可以使用RDD.persist()。例如,对于同一个lines,如果我要进行一系列转换,然后使用count计算,如果我还想接着计算reduce,那么持久化就会利用前面的count的缓存数据来计算reduce。最后,可以使用unpersist()方法从缓存中移除。

七、RDDs的血统关系图:Spark维护者RDDs之间的依赖关系的创建关系,称为血统关系图。Spark使用血统关系图来计算每个RDD的需求和恢复丢失的数据。

spark运行原理简单介绍和一些总结

上面是一个简单的血统图,优势在于知道数据的操作记录,如果其中某一步骤的RDD丢失了,那么可以根据血统关系图知道数据是如何来的,可以正向也可以反向,从而恢复数据。

八、延迟计算(lazy Evaluation):Spark对RDDs的计算是在它们第一次使用action操作时进行的,通俗地说,就是只有在数据被必要使用时才去加载,类似于Java的懒加载。例如,我们使用transformation对数据进行转换,但如果最后我们并没有使用转换后的数据来计算结果,这样岂不是白白耗费资源了吗?在大数据中,这一点尤为显著。那么,如何知道在使用时再去执行呢?Spark内部有一个metadata表会记录转换的操作记录。

九、RDD操作函数分为Transformation和Action两类:

(1)Transformation是转换的意思,顾名思义就是把数据从一种形式转变成另一种形式,可以理解为转成方便我们查看的形式,例如把一长串的字符串转成JSON树状图。

(2)Action是执行的意思,Spark提供了许多算子,伴随DAG图。

(3)两个可以理解为对应Hadoop中的map和reduce操作。

(4)没有action操作,单单转换是没有意义的。

十、Spark并行化就是执行了parallelize()方法,例如:sc.parallelize(array)

十一、sparkContext是一个对象,代表与一个集群的连接。

sc.textFile()即为加载对象。

十二、再理解一下shuffle过程:将不同partition下相同的key聚集到一个partition下,导致数据在内存中的重新分布。这也就是所谓的打乱、洗牌。

Shuffle过程分为两个阶段:shuffle write和shuffle fetch。Shuffle write将shuffle MapTask任务产生的中间结果缓存到内存中,shuffle fetch获取shuffleMapTask缓存的中间结果进行shuffleReduceTask计算。

发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/381476ddd3f32431fcab00d7cc68d791原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c

以上就是spark运行原理简单介绍和一些总结的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/27426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Laravel 表单验证失败后自动回填用户输入数据
上一篇 2026年9月23日 11:14:58
iOS 18大升级:备忘录要变语音笔记本了?
下一篇 2025年11月29日 08:58:54

相关推荐

  • Laravel 表单验证失败后自动回填用户输入数据

    本教程详细讲解在 Laravel 应用中,如何优雅地处理表单验证失败场景,确保用户之前输入的数据不会丢失。通过在控制器中使用 withInput() 方法将请求数据闪存到 Session,并在 Blade 模板中使用 old() 辅助函数,实现表单字段的自动回填,显著提升用户体验。 在 Web 应用…

    2026年9月23日
    400
  • VSCode配置C/C++单元测试 完整VSCode开发环境搭建

    要搭建#%#$#%@%@%$#%$#%#%#$%@_e2fc++805085e25c9761616c00e065bfe8中c/c++单元测试环境,需先安装c/c++扩展、test adapter for google test等必要插件,配置tasks.json和launch.json实现编译与调试…

    2026年9月23日
    000
  • Linux命令行中uniq命令的使用场景

    uniq命令需与sort配合处理相邻重复行,直接执行uniq可去除连续重复行如aabba变为aba;使用-c统计每行出现次数,结合sort -nr可排序频次;-d选项仅输出重复行,适合定位重复数据;-f跳过前N个字段(空白分隔),-s跳过前N字符,常用于忽略日志时间戳;整体在日志分析中高效实用。 u…

    2026年9月23日
    100
  • 处理动态数量问答数据的更新教程

    本教程旨在详细阐述如何有效地管理和更新包含动态数量答案的问题数据。我们将探讨在Web表单中如何设计输入字段以捕获答案内容及其唯一标识符,并通过服务器端(以PHP为例)解析提交的数据,从而实现对现有答案的精确更新和新答案的添加,确保数据一致性和系统健壮性。 场景概述:处理动态数量的问答数据更新 在许多…

    2026年9月23日
    000
  • RecyclerView列表滚动到底部检测指南

    本文详细介绍了如何在Android RecyclerView中检测用户何时滚动到列表的最后一个可见项。通过利用RecyclerView.OnScrollListener和LinearLayoutManager提供的方法,我们可以精确判断列表是否已滚动到底部或接近底部,从而触发如加载更多数据或显示提示…

    2026年9月23日
    100
  • 唉,一次堆外内存泄露让整个团队通宵处理到爆肝!

    唉,一次堆外内存泄露让整个团队通宵处理到爆肝!唉,一次堆外内存泄露让整个团队通宵处理到爆肝!唉,一次堆外内存泄露让整个团队通宵处理到爆肝!唉,一次堆外内存泄露让整个团队通宵处理到爆肝!

    点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发… 源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中…

    2026年9月23日 用户投稿
    300
  • windows8怎么把文件固定到开始屏幕_windows8固定文件到开始菜单方法

    可通过固定文件到开始屏幕提升访问效率。一、在文件资源管理器中右键文件选择“固定到开始屏幕”;二、为不支持的文件类型手动创建桌面快捷方式,再将其固定到开始屏幕;三、将文件关联程序锁定到任务栏,拖动文件至程序图标快速打开,或通过开始屏幕磁贴跳转列表访问最近文件。 如果您希望快速访问某个常用文件,但每次都…

    2026年9月23日
    000
  • 嵌入式Linux开发-根文件系统本地挂载

    嵌入式Linux开发-根文件系统本地挂载嵌入式Linux开发-根文件系统本地挂载嵌入式Linux开发-根文件系统本地挂载嵌入式Linux开发-根文件系统本地挂载

    引言 前一篇文章介绍了根文件系统的制作与nfs网络挂载,本文将探讨如何通过本地挂载根文件系统来完成系统启动。本地挂载通常用于产品发布阶段,并且分为两种操作方式。 第一种方式:在PC机上制作好文件映像rootfs.img,然后通过uboot加载并直接烧写到EMMC中。这种方法最便捷,适用于产品批量生产…

    2026年9月23日 用户投稿
    100
  • Java PreparedStatement

    大家好,很高兴再次与大家见面,我是你们的老朋友全栈君。 Java PreparedStatement与Statement类似,是Java JDBC Framework的一部分。它用于对数据库执行CRUD操作。PreparedStatement扩展了Statement接口。由于支持参数化查询,Prep…

    2026年9月23日
    2500
  • VSCode快速搭建Java:JDK配置、中文插件、调试技巧

    正确配置vscode的java开发环境,需依次完成1. 安装jdk并配置java_home及path环境变量;2. 在vscode中安装java extension pack插件以获得核心开发支持;3. 创建launch.json文件设置调试配置,确保mainclass等参数正确;4. 设置文件编码…

    2026年9月23日
    500
  • 西部数据红盘Pro对决希捷酷狼Pro:NAS专用硬盘的读写性能与可靠性,谁更适合组建你的私有云?

    选择NAS专用硬盘以稳定性为核心,西部数据红盘Pro因更优的兼容性和生态支持,成为更稳妥的选择。 选择NAS专用硬盘,核心是看稳定性和长期运行能力,读写性能反而是次要的。西部数据红盘Pro和希捷酷狼Pro都是为24/7全天候工作的私有云环境设计的高端型号,它们之间的选择更多取决于技术细节和使用偏好。…

    2026年9月23日
    000
  • 如何使用AutoKeras训练AI大模型?自动构建神经网络的指南

    AutoKeras在AI大模型训练中扮演“智能建筑师”角色,通过自动化神经架构搜索与超参数优化,加速模型开发迭代。它基于Keras/TensorFlow,支持图像、文本、结构化数据任务,提供ImageClassifier、TextClassifier等接口,用户只需设定max_trials和epoc…

    2026年9月23日
    300
  • Linux用户和权限管理的安全最佳实践

    最小权限原则要求用户和进程仅拥有必要权限,避免赋予root权限,通过sudo提权并限制命令,服务账户禁止登录且权限最小化;定期审查sudoers文件,删除无用账户,禁用root直接登录,强密码策略由pam_pwquality实现,usermod -s /sbin/nologin限制服务账户登录;文件…

    2026年9月23日
    600
  • mysql如何进入编辑模式 mysql输入sql语句创建数据库

    mysql如何进入编辑模式 mysql输入sql语句创建数据库mysql如何进入编辑模式 mysql输入sql语句创建数据库mysql如何进入编辑模式 mysql输入sql语句创建数据库mysql如何进入编辑模式 mysql输入sql语句创建数据库

    创建mysql数据库需登录后执行sql语句;避免sql注入用参数化查询、输入验证、最小权限原则、waf;解决乱码需统一客户端、数据库、表编码为utf8mb4;优化查询性能可通过索引、explain分析、避免select *、使用join、分页优化、定期维护、硬件升级、缓存。 想要用MySQL创建数据…

    2026年9月23日 用户投稿
    1500
  • Asianux 7.3安装Oracle 11.2.0.4单实例体验

    在asianux 7.3环境中安装#%#$#%@%@%$#%$#%#%#$%@_a189c++633d9995e11bf8607170ec9a4b8 11.2.0.4单实例的具体步骤和注意事项如下: 环境:Asianux 7.3 需求:安装Oracle 11.2.0.4 单实例 背景:系统使用默认的…

    2026年9月23日
    300
  • 在Loom中利用虚拟线程实现递归任务:告别ForkJoinPool的限制

    本文探讨了Java Loom中RecursiveAction和RecursiveTask与虚拟线程的兼容性。由于它们设计上依赖于ForkJoinPool及其特定的工作线程,无法直接与虚拟线程配合使用。文章提供了两种替代方案:一是利用CompletableFuture结合虚拟线程工厂实现自定义递归任务…

    2026年9月23日
    500
  • CodeIgniter 动态多数据库连接与数据导入实践指南

    本文详细介绍了在 CodeIgniter 框架中,如何根据用户输入的动态数据库凭证建立并管理第二个数据库连接。通过构建自定义连接配置数组,并利用 CodeIgniter 的数据库加载机制,开发者可以灵活地切换数据库实例,从而实现从外部数据库导入数据到主数据库的功能,提升应用的灵活性和数据处理能力。 …

    2026年9月23日
    000
  • Android Studio中实现单按钮动态跳转不同Activity的教程

    本教程旨在解决Android应用中一个按钮根据用户交互历史或应用状态动态跳转到不同Activity的需求。我们将深入探讨如何利用Intent.putExtra()传递状态信息,并结合startActivityForResult()和onActivityResult()机制,实现从一个Activity…

    2026年9月23日
    700
  • Kafka 精妙的高性能设计(上篇)

    Kafka 精妙的高性能设计(上篇)Kafka 精妙的高性能设计(上篇)Kafka 精妙的高性能设计(上篇)Kafka 精妙的高性能设计(上篇)

    kafka 的高性能设计可以说是无微不至,从生产者(producer)、到代理(broker)、再到消费者(consumer),kafka 在每一个细节上都精心优化,最终实现了极致的性能。 本文将首先带领大家建立高性能设计的思维模式,然后深入探讨 Kafka 的高性能设计方案,最终帮助大家系统地掌握…

    2026年9月23日 用户投稿
    100
  • mysql安装后怎么可视化 mysql图形界面工具安装使用

    mysql安装后怎么可视化 mysql图形界面工具安装使用mysql安装后怎么可视化 mysql图形界面工具安装使用mysql安装后怎么可视化 mysql图形界面工具安装使用mysql安装后怎么可视化 mysql图形界面工具安装使用

    要更方便地操作 mysql 数据库,推荐使用图形界面工具。常见的有:1. mysql workbench(官方工具,功能全面)2. navicat for mysql(商业软件,界面简洁,功能丰富)3. dbeaver(开源免费,跨平台支持)4. phpmyadmin(基于 web,适合 php 环…

    2026年9月23日 用户投稿
    300

发表回复

登录后才能评论
关注微信