【云计算与大数据技术】Spark的解析(图文解释 超详细必看)

news2025/1/12 23:15:09

一、Spark RDD

Spark是一个高性能的内存分布式计算框架,具备可扩展性,任务容错等特性,每个Spark应用都是由一个driver program 构成,该程序运行用户的 main函数 。

Spark提供的一个主要抽象就是 RDD(Resilient Distributed Datasets),这 是一个分布在集群中多节点上的数据集合,利用内存和磁盘作为存储介质。其中内存为主要数据存储对象,支持对该数据集合的并发操作,用户可以使用HDFS中的一个文件来创建一个RDD,可以控制RDD存放于内存中还是存储与磁盘。

RDD的设计目标是针对迭代式机器学习,每个RDD是只读的、不可更改的

创建RDD

有两种方式创建一个 RDD

在driver program 中并行化一个当前的数据集合 

利用一个外部存储系统中的数据集合创建

二、Spark与MapReduce对比

Spark 作为新一代的大数据计算框架,针对的是迭代式计算、实时数据处理,要求处理的时间更少,与MapReduce对比整体反映如下

1: 在中间计算结果方面 - Spark基本把数据存放在内存中,只有在内存资源不够的时候才写到磁盘等存储介质中; 而 MapReduce计算过程中 Map任务产生的 计算结果存放到本地磁盘中 

 2:在计算模型方面 - Spark采用 DAG 图描述计算任务,Spark拥有更丰富的功能;MapReduce则只采用 Map和 Reduce两个函数,计算功能比较简单

3:在计算速度方面 - Spark 的计算速度更快

4:在容错方面 - Spark采用了和 MapReduce类似的方式,针对丢失和无法引用的RDD,Spark采用利用记录的transform,采取重新做已做过的 transform

5:在计算成本方面 - Spark是把RDD主要存放在内存存储介质中,则需要提供高容量的内存;而 MapReduce是面向磁盘的分布式计算框架,因此在成本考虑方面,Spark的计算成本高于 MapReduce计算框架

6:在简单易管理方面 - 目前Spark也在同一个集群上运行流处理 、批处理和机器学习,同时Spark也可以管理不同类型的负载。这些都是 MapReduce做不到的 

三、Spark工作机制

开始深入探讨Spark的内部工作原理,具体包括Spark运行的DAG图、Partition、容错机制、缓存管理以及数据持久化

1:DAG工作图

DAG是有向无环图

当用户运行action操作的时候, Spark调度器检查RDD的lineage图,生成一个DAG图

为了Spark更加高效的调度和计算,RDD DAG中还包括宽依赖和窄依赖

窄依赖是父节点 RDD 中的分区最多只被子节点 RDD 中的一个分区使用

宽依赖是父节点RDD中的分区被子节点 RDD 中的多个子分区使用

采用DAG方式描述运行逻辑,可以描述更加复杂的运算功能,也有利于Spark调度器调度 

 

 2:分区Partition

Spark 执行每次操作transformation都会产生一个新的RDD,每个RDD是Partition分区的集合

在Spark中 ,操作的粒度是Partition分区

当前支持的分区方式有hash分区和范围(range)分区

3:Linedge容错方法

在容错方面有多种方式,包括数据复制以及记录修改日志

RDD本身是一个不可更改的数据集,Spark根据transformation和action构建它的操作图DAG

当执行任务的 Worker失败时完全可以通过操作图 DAG 获得之前执行的操作,进行重新计算

针对RDD的wide dependency,最有效的容错方式同样是采用checkpoint机制  ,但是当前,Spark并没有引入auto checkpointing机制

4:内存管理

旧版本Spark的内存空间分成了3块独立的区域,每块区域的内存容量是按照JVM堆大小的固定比例进行分配的

1:Execution - 在执行shuffle、join、sort和aggregation时,Execution用于缓存中间数据 默认为0.2

2:Storage - Storage主要用于缓存数据块以提高性能,同时也用于连续不断地广播或发送大的任务结果 默认为0.6

3:Other - 这部分内存用于存储运行系统本身需要加载的代码与元数据 默认为0.2

无论是哪个区域的内存,只要内存的使用量达到了上限,则内存中存储的数据就会被放入到硬盘中,从而清理出足够的内存空间,

5:数据读取

Spark最重要的一个功能是它可以通过各种操作 (operations)持久化(或者缓存 )一 个集合到内存中

这个能力使后续的动作速度更快(通常快10倍以上)。 对应迭代算法和快速的交互使用来说,缓存是一个关键的工具

用户可以利用不同的存储级别存储每一个被持久化的RDD  

四、数据读取

Spark支持多种外部数据源来创建 RDD,Hadoop支持的所有格式Spark都支持

包括HDFS Amazon S3 HBase等等

创作不易 觉得有帮助请点赞关注收藏~~~

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

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

相关文章

Java搭建宝塔部署实战SSM智能养生平台管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的SSM智能养生平台管理系统源码。 技术架构 技术框架:ssm layui jsp mybatis bootstrap jquery mysql5.7运行环境:jdk8 nginx1.20 tomcat9 IntelliJ …

与电装DENSO建立EDI连接需要掌握哪些信息?

项目背景 株式会社电装DENSO CORPORATION是世界汽车零部件及系统的顶级供应商,在2013年《财富》周刊公布的世界500强企业排名中,位列第242名。作为世界顶级汽车技术、系统以及零部件的全球性供应商,电装在环境保护、发动机管理、车身电子产品…

DocuWare平台——用于文档管理和工作流程自动化的内容服务平台详细介绍(下)

接上篇~~ 三、处理文档、控制工作流程 顺畅的信息流是每个生产过程的基础。自动化任何基于文档的任务(从有效的重新提交文档到复杂的审批工作流程),让您的团队在跨组织和跨部门的工作中畅通无阻。 具有列表的任务管理 通过自动汇总当前信…

数字分类

目录 1012:数字分类 输入格式: 输出格式: 输入样例 1: 输出样例 1: 输入样例 2: 输出样例 2: 代码长度限制: 时间限制: 内存限制: 思路: 1.变量存储 1.2代码: 大坑,好多坑: 坑点1&#xff1…

Android 动态分区详解(六) 动态分区的底层机制

文章目录 1. Android 动态分区的两重含义2. device mapper 的原理3. linear 映射的原理3.1 多个设备映射示例3.2 `dmsetup create` 命令参数解释1. `dmsetup create` 命令2. 映射表格式解析3.3 单个设备映射示例1. 使用 dmsetup 映射单个设备2. 使用 dmctl 映射 super 设备本文…

二、物理层(二)传输介质和物理层设备

目录 2.1物理层概述 2.2导向型传输介质 2.2.1双绞线 2.2.2同轴电缆 2.2.3光纤 2.3非导向型传输介质 2.3.1无线电波 2.3.2微波 2.3.3红外线、激光 2.4物理层设备 2.4.1中继器 2.4.2集线器 2.1物理层概述 物理层考虑的是如何在连接到各种计算机的传输媒体上传输数据比…

推断统计 | 学习笔记 (全)

一.概率与概率分布 概率论:为解决不确定性问题提供方法 1.随机事件及其概率 基本概念 试验:在相同条件下,对事物或现象所进行的观察。特点是可以在相同的条件下重复进行;每次试验的可能结果不止一个,但试验的所有可…

QT—QString类

一、隐式共享 隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作。隐式共享类当作为函数参数传递的时候,不仅安全而且效率很高,因为传递的时候只是传递的数据的指针,数据本身只当自己被修改的时候才会去复制。简称写时复制。数据相…

【AI with ML】第 2 章 :计算机视觉简介

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

前端大串讲,狂神,狂神,p6 01:00

一 概述 前端框架:vue、React、 uniapp(小程序)。前端脚手架:babel-cli、vue cli、webpack-cli服务器:node.js、java后端前端框架的用法: 方式1:用纯前端就可以独立的去完成一些前端项目的开发,并脱离于后…

正点原子 IMX6ULL 自学笔记(未完待续。。。)

一、Makefile 1、语法 目标…… : 依赖文件集合…… 命令 1 命令 2 …… 例子: 生成main可执行文件需要main.o input.o calcu.o,命令是gcc -o main main.o input.o calcu.o main: main.o input.o calcu.ogcc -o main main.o input.o calcu.omain.o: ma…

C++实现对象行为型-迭代器模式

1.1 基本概念 迭代器模式(Iterator Pattern):提供了一种方法来访问聚合对象,而不用暴露这个对象的内部。 聚合对象的两个基本功能: (1)存储内部数据; (2)…

MySQL表的进阶知识

目录 一、数据库约束 1、not null 2、unique 3、primary key 4、auto_increment 5、default 6、foreign key 7、check 二、插入数据 三、设计表 1、一对一 2、一对多 3、多对多 四、查询 1、聚合查询 a、聚合函数查询 b、group by c、having 2、联合查…

pikachu靶场-8 越权漏洞

越权漏洞 越权漏洞概述 由于没有对用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超级管理员)范围内的操作 平行越权:A用户和B用户属于同一级别用户,但各…

虚拟主播怎么做出来的?今日安利:AI虚拟人物怎么弄?

某天,一位品牌店的老板向我寻求帮助,大概内容就是:“他最近要开拓线上店铺的直播渠道,直播时间较长,雇一位主播又费钱又辛苦,想制作一个符合品牌调性的AI虚拟人物来带货。”于是我跟他分享了制作虚拟主播的…

北京医保定点医院2022年版

文章目录概述官方查询方法49家A类定点医院政府公告初始19家2021年4月新增13家A类医院2021年11月新增7家A类医院2022年6月新增10家A类医院定点中医/专科医院定点社区卫生服务机构附录问题医保电子凭证4家定点医院的查询和修改北京医保个人账户资金定向使用北京医院排行榜单概述 …

基于BINN算法的CCPP全路径覆盖算法

1.CCPP整体算法文档 1.1 ccpp基础介绍 全路径覆盖算法(CCPP: Complete Coverage Path Planning)作为扫地机器人较为关键的组成部分,其问题的本质是:在栅格地图中,全覆盖路径规划问题就演变为寻找机器人的下一个移动位置,只有准确…

java计算机毕业设计ssm职工社保信息管理系统t22xh(附源码、数据库)

java计算机毕业设计ssm职工社保信息管理系统t22xh(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

建设银行互联网经营战略优化方案设计

目 录一、绪论 1 (一)项目背景 1 (二)项目意义 1 (三)项目内容和方法 1 二、互联网金融与我国商业银行概述 3 (一)互联网金融的内涵 3 (二)互联网金融的功…

【云计算与大数据计算】Hadoop MapReduce实战之统计每个单词出现次数、单词平均长度、Grep(附源码 )

需要全部代码请点赞关注收藏后评论区留言私信~~~ 下面通过WordCount,WordMean等几个例子讲解MapReduce的实际应用,编程环境都是以Hadoop MapReduce为基础 一、WordCount WordCount用于计算文件中每个单词出现的次数,非常适合采用MapReduce进…