当前位置: 首页 > news >正文

从了解到掌握 Spark 计算框架(一)Spark 简介与基础概念

文章目录

    • 什么是 Spark?
      • 核心特点
    • Spark 对比 MapReduce
    • Spark 编程模型
      • RDD
      • DataFrame
      • Dataset
    • Spark 运行模式
    • Spark 生态

什么是 Spark?

Spark 是一个基于内存的分布式计算框架,最初由加州大学伯克利分校的 AMPLab 开发,后来捐赠给了 Apache 软件基金会。它提供了一个高效、通用、可扩展且易用的大数据处理平台,支持各种类型的应用,包括批处理、实时流处理、机器学习和图处理等。

核心特点

  • 快:Spark 使用内存计算来加速数据处理。相比于传统的基于磁盘的数据处理框架(如:MapReduce),Spark 将数据存储在内存中,可以显著减少数据读写的开销,从而加快计算速度。

  • 分布式:Spark 可以在多个节点上并行运行,通过将任务分配给集群中的多个计算节点来实现横向扩展,实现任务的并行处理,加速数据处理的速度。它还支持在内存中缓存数据,以加速迭代算法和交互式查询。

  • 全面:Spark 提供了统一的编程模型,可以用于批处理、交互式查询、流处理和机器学习等各种类型的任务。这种通用性让开发人员可以在同一个框架下处理各种不同类型的数据处理需求。

  • 易用:Spark 提供了丰富的高级API(如 RDD、DataFrame 和 Dataset),以及支持多种编程语言(如 Scala、Java、Python)。

  • 生态系统丰富:Spark 生态系统丰富多样,如 Spark SQL(用于结构化数据处理)、Spark Streaming(用于实时数据处理)、MLlib(用于机器学习)、GraphX(用于图处理)等,以及与其他大数据技术的集成,如Hadoop、Hive、Kafka 等。

Spark 对比 MapReduce

处理速度

  • Spark 使用内存计算和基于 DAG(Directed Acyclic Graph)的执行计划,在处理迭代算法和交互式查询时通常比 MapReduce 快数倍。

  • MapReduce 是基于磁盘读写的模型,在每次任务完成后需要将中间结果写入磁盘,因此速度相对较慢,适用于批处理任务。

编程模型

  • Spark 提供了丰富的高级 API,如 RDD、DataFrame 和 Dataset,以及支持多种编程语言,编程模型更灵活,易于使用和学习。

  • MapReduce 的编程模型相对简单,主要是 Map 和 Reduce 两个阶段,需要手动处理数据的分割和中间结果的写入。

计算方式

  • Spark 支持内存计算,将数据存储在内存中进行处理,以加速数据处理和计算,适用于迭代算法和实时数据处理。

  • MapReduce 主要是基于磁盘的计算模型,每次任务都会将中间结果写入磁盘,造成了额外的 IO 开销。

容错性

  • Spark 使用 RDD 的血统来记录每个 RDD 的来源和依赖关系,在数据丢失或计算节点失败时可以重新计算丢失的数据分区,保证计算结果的正确性。

  • MapReduce 也具有容错性,但是在任务失败时需要重新启动整个任务,造成了额外的开销和时间延迟。

Spark 相对于 MapReduce 具有更快的处理速度、更灵活的编程模型、支持内存计算和更好的容错性等优势,适用于迭代算法、实时数据处理等场景,而 MapReduce 则更适用于传统的批处理任务。

Spark 编程模型

Spark 的编程模型是指开发者用来编写 Spark 应用程序的抽象接口和概念,共有三种核心的编程模型,包括 RDD、DataFrame 和 Dataset。

RDD

  • RDD 称为弹性分布式数据集,是 Spark 最早引入的数据抽象概念,代表着分布式的只读数据集合。

  • RDD 是一个分区的、不可变的、可并行计算的数据集,可以从外部数据源创建,也可以通过在其他 RDD 上进行转换操作生成。

  • RDD 提供了一系列的转换操作(如mapfilterreduceByKey等)和行动操作(如collectcountsaveAsTextFile等),可以进行数据的转换和计算。

  • RDD 具有容错性,如果某个分区的数据丢失或出错,Spark 可以根据 RDD 的血统重新计算丢失的数据分区,保证计算结果的正确性。

DataFrame

  • DataFrame 是一个分布式的、带有命名列的数据集,类似于关系型数据库中的表。

  • DataFrame 提供了结构化的数据处理功能,支持类似 SQL 的查询操作和列操作,如selectfiltergroupBy等。

  • DataFrame 是基于 RDD 构建的,但是相比于 RDD,DataFrame 提供了更高层次的抽象,更适合于处理结构化数据。

  • DataFrame 可以从多种数据源创建,如文本文件、JSON 文件、Parquet 文件、数据库表等。

Dataset

  • Dataset 是 Spark 2.0 引入的新的抽象概念,结合了 RDD 和 DataFrame 的特点,提供了类型安全的分布式数据集。

  • Dataset 可以包含任意类型的数据,但是在运行时会将其转换为 JVM 的对象类型。

  • Dataset 提供了强类型的 API,可以在编译时进行类型检查,避免了在运行时出现类型错误。

  • Dataset 通常用于需要更严格的类型控制和性能优化的场景,如机器学习等。

Spark 运行模式

Spark 可以在多种不同的运行模式下进行部署和执行,包括以下几种常见的模式:

本地模式(local)

  • 在本地模式下,Spark 只在单个 JVM 进程中运行,不需要启动集群,适用于开发和测试环境。

  • 本地模式通常用于在开发阶段快速验证代码逻辑和功能。

独立部署模式(Standalone)

  • 在独立部署模式下,Spark 使用自己的集群管理器启动和管理 Spark 应用程序,无需依赖于其他的集群管理系统。

  • 独立部署模式适用于对资源管理有一定需求,但规模不太大的环境。

YARN 模式

  • 在 YARN 模式下,Spark 作为 YARN 的一个应用程序运行在 Hadoop 集群上,由 YARN 负责资源管理和作业调度。

  • YARN 模式是最常见的 Spark 部署模式之一,可以与 Hadoop 生态系统无缝集成,充分利用 Hadoop 集群的资源。

Mesos 模式

  • 在 Mesos 模式下,Spark 作为 Mesos 的一个框架运行在 Mesos 集群上,由 Mesos 负责资源管理和作业调度。

  • Mesos 模式也是一种常见的 Spark 部署模式,适用于需要动态资源分配和调度的环境。

Kubernetes 模式

  • 在 Kubernetes 模式下,Spark 作为一个 Kubernetes 的应用程序运行在 Kubernetes 集群上,由 Kubernetes 负责资源管理和作业调度。

  • Kubernetes 模式是一种新兴的 Spark 部署模式,具有弹性、可伸缩的特点,适用于容器化的环境和微服务架构。

Spark 生态

  1. Spark Core:Spark Core 是 Spark 生态系统的核心组件,提供了分布式数据集(RDD)、任务调度和执行引擎、内存计算和优化以及容错性和恢复机制等功能,是构建大数据处理应用程序的基础。

  2. Spark SQL:Spark SQL 是 Spark 提供的用于结构化数据处理和查询的模块,它提供了类似于 SQL 的查询语言和 DataFrame API,可以方便地对结构化数据进行查询、过滤、聚合等操作。

  3. Spark Streaming:Spark Streaming 是 Spark 提供的用于实时数据处理的模块,它可以将实时数据流分成小批次,并使用 Spark 引擎进行处理,支持复杂的流处理逻辑,如窗口操作、状态管理等。

  4. MLlib:MLlib 是 Spark 提供的用于机器学习的库,包括常见的机器学习算法和工具,如分类、回归、聚类、推荐等,可以在分布式环境下进行大规模的机器学习任务。

  5. GraphX:GraphX 是 Spark 提供的用于图计算的库,支持图的创建、转换、遍历和计算,可以用于社交网络分析、推荐系统、网络安全等领域。

  6. SparkR:SparkR 是 Spark 提供的用于 R 语言的接口,可以在 R 中使用 Spark,利用 Spark 引擎进行大规模数据处理和分析。

  7. Spark on YARN:Spark 可以在 Hadoop YARN 上运行,利用 YARN 的资源管理和调度功能来管理 Spark 应用程序的资源,实现在 Hadoop 集群上的分布式计算。

除了以上列举的组件外,还有许多其他与 Spark 相关的工具和技术,如 Spark On Hive、Kafka等,都可以用于扩展和增强 Spark 的功能和性能。整个 Spark 生态系统是一个丰富多样、不断发展的生态系统,为用户提供了灵活、强大的大数据处理解决方案。

相关文章:

从了解到掌握 Spark 计算框架(一)Spark 简介与基础概念

文章目录 什么是 Spark?核心特点 Spark 对比 MapReduceSpark 编程模型RDDDataFrameDataset Spark 运行模式Spark 生态 什么是 Spark? Spark 是一个基于内存的分布式计算框架,最初由加州大学伯克利分校的 AMPLab 开发,后来捐赠给了…...

linux bind函数

bind函数的目的是让把客户端对应的端口(port)地址和ip地址绑定到客户端 [参考](Linux之bind 函数(详细篇)_linux bind函数-CSDN博客)...

Flink系列一:flink光速入门 (^_^)

引入 spark和flink的区别:在上一个spark专栏中我们了解了spark对数据的处理方式,在 Spark 生态体系中,对于批处理和流处理采用了不同的技术框架,批处理由 Spark-core,SparkSQL 实现,流处理由 Spark Streaming 实现&am…...

PySpark特征工程(III)--特征选择

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 特征工程是数据分析…...

Mongodb的数据库简介、docker部署、操作语句以及java应用

Mongodb的数据库简介、docker部署、操作语句以及java应用 本文主要介绍了mongodb的基础概念和特点,以及基于docker的mongodb部署方法,最后介绍了mongodb的常用数据库操作语句(增删改查等)以及java下的常用语句。 一、基础概念 …...

七大战略性新兴产业崭露头角:新能源电燃灶或将成为未来厨房新宠

近日,在国家发布的七大战略性新兴产业名单中,新能源产业赫然在列,作为其中的重要组成部分,华火新能源电燃灶凭借其独特的优势,正逐渐走进人们的视野,有望成为未来厨房的新宠。 华火新能源电燃灶作为清洁能源…...

C#进阶-用于Excel处理的程序集

在.NET开发中,处理Excel文件是一项常见的任务,而有一些优秀的Excel处理包可以帮助开发人员轻松地进行Excel文件的读写、操作和生成。本文介绍了NPOI、EPPlus和Spire.XLS这三个常用的.NET Excel处理包,分别详细介绍了它们的特点、示例代码以及…...

持续总结中!2024年面试必问 20 道 Kafka面试题(五)

上一篇地址:持续总结中!2024年面试必问 20 道 Kafka面试题(四)-CSDN博客 九、请解释Kafka中的Zookeeper的作用。 在Kafka中,ZooKeeper扮演着至关重要的角色,主要负责集群管理、协调和状态同步等功能。以下…...

Draw.io 使用详细教程

Draw.io 是一款功能强大的在线绘图工具,适用于创建流程图、网络图、组织结构图、UML 图等。以下是详细的使用教程,包括基本操作、快捷键、常用技巧和进阶技巧。 1. 创建新图 选择存储位置 首次使用时,系统会询问你要将图保存到哪里。你可以…...

人工智能学习笔记(1):了解sklearn

sklearn 简介 Sklearn是一个基于Python语言的开源机器学习库。全称Scikit-Learn,是建立在诸如NumPy、SciPy和matplotlib等其他Python库之上,为用户提供了一系列高质量的机器学习算法,其典型特点有: 简单有效的工具进行预测数据分…...

PromptPort:为大模型定制的创意AI提示词工具库

PromptPort:为大模型定制的创意AI提示词工具库 随着人工智能技术的飞速发展,大模型在各行各业的应用越来越广泛。而在与大模型交互的过程中,如何提供精准、有效的提示词成为了关键。今天,就为大家介绍一款专为大模型定制的创意AI…...

IDEA升级web项目为maven项目乱码

今天将一个java web项目改造为maven项目。 首先&#xff0c;创建一个新的maven项目&#xff0c;将文件拷贝到新项目中。 其次&#xff0c;将旧项目的jar包&#xff0c;在maven的pom.xml做成依赖 接着&#xff0c;把没有maven坐标的jar包在编译的时候也包含进来 <build>…...

存内计算与扩散模型:下一代视觉AIGC能力提升的关键

目录 前言 视觉AIGC的ChatGPT4.0时代 扩散模型的算力“饥渴症” 存内计算解救算力“饥渴症” 结语 前言 ​ 在这个AI技术日新月异的时代&#xff0c;我们正见证着前所未有的创新与变革。尤其是在视觉内容生成领域&#xff08;AIGC&#xff0c;Artificial Intelligence Generate…...

如何上传模型素材创建3D漫游作品?

一、进入3D空间漫游互动工具编辑器 进入720云官网-点击“开始创作”-选择3D空间漫游-进入到作品创建页面。 二、上传模型及素材&#xff0c;创建生成3D空间漫游模型 1.创建3D空间作品&#xff1a;您可以选择新建空白作品或使用720云提供的预设空间模板&#xff0c;本篇主要介绍…...

NFS p.1 服务器的部署以及客户端与服务端的远程挂载

目录 介绍 应用 NFS的工作原理 NFS的使用 步骤 1、两台机子 2、安装 3、配置文件 4、实验 服务端 准备 启动服务&#xff1a; 客户端 准备 步骤 介绍 NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;是一种古老的用于在UNIX/Linux主…...

性能工具之 JMeter 常用组件介绍(二)

文章目录 一、Thread Group二、断言组件1、Response Assertion&#xff1a;响应断言2、Response Assertion&#xff1a;响应断言3、Duration Assertion&#xff1a;响应时间断言4.、JSON Assertion&#xff1a;json断言 一、Thread Group 线程组也叫用户组&#xff0c;是性能测…...

Bev 车道标注方案及复杂车道线解决

文章目录 1. 数据采集方案1.1 传感器方案1.2 数据同步2. 标注方案2.1 标注注意项2.2 4d 标注(时序)2.2.1 4d标签制作2.2.2 时序融合的作用2.2.2.1 时序融合方式2.2.2.2 时序融合难点2.2.2.2 时序实际应用情况3. 复杂车道线解决3.1 split 和merge车道线的解决3.2 大曲率或U形车道…...

vue 将echart 下载为base64图片

1 echart是页面的子组件&#xff0c; 2 页面有多个echart 3 将多个echart下载为base64图片 // 子组件 echart&#xff0c;要保存echartconst chart this.$echarts.init(this.$refs.chart, light) this.chartData chart; //保存数据&#xff0c;供父组件alarmReport调用(th…...

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别

在公安和公共安全领域&#xff0c;视频图像信息的应用日益广泛&#xff0c;尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理&#xff0c;GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的&#xff0c;但它们在实际…...

白杨SEO:小红书标题怎么写?小红书怎么推广引流到微信?小红书违规注销不了怎么办?33个小红书运营常见问题解答【干货】

前言&#xff1a;这是白杨SEO公号原创第533篇。为什么想到写这个&#xff1f;因为很多白杨SEO朋友在做小红书遇到这样或那样的问题来问我&#xff0c;所以我把一些问得较多的常见热门问题整理写出来&#xff0c;有需要的可以随时查看&#xff0c;收藏与分享。图片在公众号白杨S…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...