【Spark】Spark是什么?能干什么?有什么特点?

news2025/1/20 1:14:47

一、什么是Spark

官网:http://spark.apache.org

在这里插入图片描述

Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters.

Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、SparkStreaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

二、Spark的作用

  • 中间结果输出:基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的,考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果。

  • Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

三、Spark特点

与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG(有向无环图)执行引擎,可以通过基于内存来高效处理数据流。
在这里插入图片描述

易用

Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在这些shell中使用Spark集群来验证解决问题的方法。
在这里插入图片描述

通用

Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

兼容性

Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用Spark。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。
在这里插入图片描述

四、Spark和Hadoop

有些人说Spark的出现代表着Hadoop的死亡,这个观点我是不认同的。Hadoop是一个分布式的系统生态,不是靠着Spark这个引擎可以替代的。

但不得不承认,Spark的出现对于Hadoop来说,确实极大程度上弥补了一些短板,对Hadoop造成了一些影响。而Hadoop的生态,包括资源调度和文件存储的部分,对于Spark这个纯引擎来说,也是很有帮助的。

具体来说,Spark帮助Hadoop实现了用户友好。一个将Spark和Hadoop结合起来使用的人,和一个只使用Hadoop生态内工具的人,感受将会是截然不同的。

第一,使用Spark的时候,不再需要考虑怎么样把各种日常的操作硬塞到map和reduce这两个操作中间去。因为Spark提供了抽象程度更高的接口。

第二,使用Spark的时候,不用再为一个查询而等到油尽灯枯。建立在RDD和内存存储中间数据上的Spark,对实时性的支持很高。

在这里简单讲一下RDD。RDD是一个抽象的概念,一个逻辑上的数据结构,中文全称是弹性分布式数据集,最直接的理解就是一个大的dataframe——这个dataframe可能是所有机器上原始数据的总和,也可能是中间计算到某一步得到的一个中间结果形成的dataframe。

五、Spark Streaming

为什么要单独把Spark Streaming拿出来将呢?这属于个人执念。促使我去理解Spark这个概念的,就是Spark Streaming这个建立在Spark引擎上的应用。在我过去的想法里,Spark是一种数据处理工具,怎么还能做数据流的传输管理呢?直到我详细的去了解了Spark,才知道数据处理工具指的是MLLib或者Shark这些同样建立在Spark引擎上的应用。

单独说一下Spark Streaming。用Apache的官方说法是,Spark Streaming就是从某处接受实时数据,然后将实时数据进行分片分批,再做一些需要的处理(比如数据清洗或者数据聚合),最后再分批将数据向一个目标输送过去。

这个过程中分批分片这一点值得注意,这意味着Spark传出去的数据流是一批一批的,可以根据下游接受方的需要对传输速度和每批数据的大小进行调整。

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

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

相关文章

MATLAB连续LTI系统的时域分析(十)

目录 1、实验目的: 2、实验内容: 1、实验目的: 1)掌握利用MATLAB对系统进行时域分析的方法; 2)掌握连续时间系统零输入响应的求解方法; 3)掌握连续时间系统零状态响应、冲激响应和…

AD9739配置解析与数据输出指南

1 概述 本文用于AD9737芯片的配置使用情况,以及数据输出的格式说明情况,数据速率的计算情况等。 AD9739是ADI公司的一款14BIT,可达2.5GSPS采样率的DAC芯片。 2 AD9739的性能 支持的输入数据速率:1.6GSPS TO 2.5GSPS. industry lea…

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记 论文原文链接:https://ieeexplore.ieee.org/abstract/document/9039804 本笔记对部分要点进行了翻译和批注,原文和翻译可参考链接阅读,此处不进行完整翻译。 论文…

【服务网格】Service Mesh 是什么?为我们解决了什么问题?

文章目录 背景一、Service Mesh 介绍Service Mesh的定义Service Mesh 诞生 二、Service Mesh 解决的问题三、Service Mesh 的原理四、Service Mesh具体是怎么实现的?Istio是什么?istio架构和主要功能Istio 1.5.1 性能总结Istio与Kubernetesistio的实战案…

四、MyBatis获取参数值的两种方式(重点)

文章目录 四、MyBatis获取参数值的两种方式(重点)4.1 单个字面量类型的参数4.2 多个字面量类型的参数4.3 map集合类型的参数4.4 实体类类型的参数4.5 使用Param标识参数 四、MyBatis获取参数值的两种方式(重点) MyBatis获取参数值…

IP-GUARD屏幕记录能实现平时不记录,特定操作触发记录吗?

支持触发性屏幕记录。部分策略有选项“记录屏幕”,勾选后,策略触发时,会自动记录客户端当时的屏幕情况,记录次数和间隔可通过配置修改。 所有包含了记录屏幕的策略有: 应用程序、上网浏览、流量控制、网络控制、邮件控制、IM传送控制、上传控制、文档控制、打印控制、敏感…

深浅拷贝,类型检测及继承面试题

01 对象的深/浅拷贝 1.1 变量的存储 基本类型:基本类型的值存在栈内存中 引用类型: 引用类型的地址存储在栈内存中,他的值存储在堆内存中,通过指针(地址)连接 1.2 变量拷贝 基本类型:基本类型拷贝的是值 引用类型…

达梦数据库中,如何设置表的访问控制权限?

在工作中,大家都会遇到这样的场景,出于对数据库访问安全的考虑,对于某些用户我们不想让他们看到全库的表,只想给他们特定表的访问权限。那么在DM数据库中我们该如何去配置相应的权限呢? 我们下面来进行详细解析。 我们…

buuctf6

目录 [ACTF2020 新生赛]BackupFile [RoarCTF 2019]Easy Calc 利用PHP的字符串解析特性Bypass: http走私攻击 来首歌吧 荷兰宽带数据泄露​编辑 面具下的flag [ACTF2020 新生赛]BackupFile 1.打开环境 查看源代码得不到任何想要的信息,使用目录扫描来得到我们…

关于秒杀系统的一系列问题

阻塞队列怎么么实现?超卖问题?整体怎么实现? 5 设计一个秒杀系统 特点:高并发,请求量远大于库存量,只有少数能成功;逻辑比较简单,下单减库存; 设计理念:**限…

ESP8266基于Lua开发点灯示例

ESP8266基于Lua开发点灯示例 ✨基于ESPlorer IDE:https://github.com/4refr0nt/ESPlorer/releases🔧固件烧录工具:NodeMCU-PyFlasher🌿esp8266烧录工具下载:https://github.com/marcelstoer/nodemcu-pyflasher/release…

LabVIEW CompactRIO 开发指南2 CompactRIO软件架构

第一章 CompactRIO软件架构 几乎所有的CompactRIO系统都至少有三个顶层VIs在三个不同的目标上异步执行:FPGA、实时操作系统(RTOS)和主机PC。如果开始软件开发时没有某种架构或流程图可供参考,那么可能会发现跟踪所有软件组件和通信路径是具有挑战性的。拥有一个在…

CentOS7上使用yum搭建LNMP架构并实现wordpress博客实战

前言 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 &#xff0c…

魔兽worldserver.conf 服务端配置文件说明

魔兽worldserver.conf 服务端配置文件说明 我是艾西,今天把很多小伙伴需要的魔兽worldserver.conf 服务端配置文件说明分享给大家,大家可以自己研究参考下 worldserver.conf 这个文件是服务端的配置文件,可以在这里做很多个性化修改 注意&a…

SpringSecurity跌坑指南

SpringSecurity跌坑指南 1,事情原委 这两天开始了毕业设计,但是突然发现自己的java方面的基础比较薄弱,于是决定自己从头到尾的开发一个java项目 要说跌的最惨的坑,莫过于springsecurity,如果你只是想要在项目里面配…

〖ChatGPT实践指南 - 零基础扫盲篇⑦〗- 基于 Python 实现的 OpenAI-Library 的简单使用

文章目录 ⭐ python 安装 OpenAI library⭐ 创建 openai.py 进行测试⭐ openai.Completion.create() 方法的小拓展 该章节我们呢来学习一下 OpenAI-Library 的使用,OpenAI-Library 是 OpenAI 官方给我们提供的各种开发语言的库,供我们使用。在前面的章节…

【无标题】基于matlab的长短期神经网络lstm的股票预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的股票预测 MATALB编程实现,附有代码 效果图 结果分析 展望 参考论文 背影 股票市场的波动十分巨大,由于一些不确定因素的影响,导致很难对股票进行投资盈利。因此&…

数据库 SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 解决方法

目录 一、错误提示信息: 二、原因分析: 三、解决方法: 四、执行完成结果: 五、重要说明 一、错误提示信息: 本文验证是数据库中的baiduAi_0258表无法通过select语句ID条件查询, 如执行 select * fro…

远程桌面,openGL

x11、xserver看另一篇博客 openGL是一种规范,用于绘制图像 OpenGL是Khronos Group开发维护的一个规范(也就是提供了一种接口),它主要为我们定义了用来操作图形和图片的一系列函数的API,需要注意的是OpenGL本身并非API。…

vscode 配置有误导致的一次Linux 崩溃

一、问题描述 1. 要实现的功能 编写一个Linux 按键驱动,按下按键时,产生中断,在中断中启动定时器进行防抖处理。 2. 出现的问题 在中断处理函数中,调用 add_timer 函数设置定时器超时函数,并启动定时器。编写完驱动…