Spark的基本介绍

Spark是为解决MR在大规模数据处理中的低效和不便迭代计算问题而诞生的,它基于内存计算的RDD数据结构显著提升了运行速度。Spark提供多语言API,支持快速、易用且通用的大规模数据处理,包括SparkCore、SparkSQL、SparkStreaming、SparkMLlib和SparkGraphX等组件,可在不同平台上运行并与其他软件集成。
摘要由CSDN通过智能技术生成

Spark的基本介绍

什么是Spark

定义: Spark是一款用于大规模数据处理分布式的分析引擎

MR: 是一款用于大规模数据处理分布式的分析引擎

MR存在的弊端:
	1- 使用API相对比较低级: 大量的功能代码都需要程序员自己来实现
	2- 计算效率慢: 大量的经过磁盘和内存之间的交互, 基于磁盘计算 IO比较大 (IO密集型框架)
	3- 迭代计算非常不方便

什么是迭代计算:
	在计算过程中, 需要将计算流程划分为N个阶段, 每个阶段之间互相依赖, 后一个阶段必须等待前一个阶段执行完成后, 然后才能执行下一个阶段

​ 对于市场来说, 虽然说离线计算对实时性要求一般不是特别的搞, 但是依然希望能够计算的越快越好, 所以在这样的背景下, 迫切需求一款能够支持大规模的分布式计算的引擎, 同时能有非常高效的迭代计算的性能

Spark其实就是在这样的背景下, 逐步的产生了出来

Spark最早来源于加州伯克利分校一帮博士以及教授共同发布的一篇论文而产生的, 论文: 弹性分布式数据集

RDD: Spark的核心, 是Spark的一个数据结构, 在后续Spark Core中主要讲解的内容, 目前可以先理解为就是一个庞大的容器, 整个迭代计算操作, 都是基于这个容器来进行, 整个计算可以基于内存来进行迭代

RDD出现, 提供了会更加高效的计算平台, 同时也提供了更加高阶的API

Spark的开发语言: Scala(基于Java)

官方网站: https://www.spark.apache.org Apache旗下的顶级开源项目

为什么说Spark运行效率要优于MR?

1- Spark提供了全新的数据结构: RDD 支持在内存中进行计算, 部分迭代操作支持直接在内存中进行迭代处理

2- Spark程序是基于线程运行的, 而MR是基于进程来运行, 线程的启动和销毁是优于进程的

在这里插入图片描述

Spark的发展史

在这里插入图片描述

在这里插入图片描述

PySpark本质就是一个Python的库, 主要用于操作Spark, 近年来这个库下载了也是在不断的攀升 意味着使用人群也在不断的增长, 同时官方已经将Python作为操作Spark的第一语言了

Spark的特点

  • 1- 运行速度快
原因一: 提供了一个全新的数据结构 RDD(弹性分布式数据集)
	整个计算操作, 基于内存计算, 当内存不足的时候, 可以放置到磁盘上

原因二: 整个Spark是基于线程运行的, 线程的启动和销毁优于进程
  • 2- 易用性
原因一: Spark提供了多种操作语言的API. Python  SQL  scala Java  R

原因二: Spark提供非常多的高阶API, 而且这些API在不同的语言中操作基本都是类似的, 大大降低了程序员学习成本
  • 3- 通用性
	spark是有多个组件组成的, 主要有Spark Core,  Spark SQL,  Spark Streaming, Spark MLlib, Spark graphX
	
	Spark Core: Spark的核心, 学习Spark的基础, 学习Spark Core 主要学习RDD  重点学习内容(基础)
		主要维护RDD数据结构
		提供RDD各种API
		提供了与内存相关的API
	
	Spark SQL:  通过SQL方式操作Spark   重点学习的部分(应用)
	
	Structured Streaming: 基于Spark SQL 提供的流式计算的方案(实时计算), 仅处理结构化的数据
	
	Spark Streaming: Spark用于进行流式计算(实时计算)   暂不学习
		在国内 整个实时部分, 主要是应用在Flink, 而非Spark Streaming, 因为Spark的流并不是真正意义的流式计算, 称为微批处理
	
	Spark MLlib: Spark用于进行机器学习的库   专门针对特定人群
	 
	Spark GraphX: Spark用于进行图计算的库    专门针对特定人群

在这里插入图片描述

  • 4- 随处运行
原因一:  编写好的Spark程序, 可以被提交到多个不同的资源平台运行: Local  Spark集群(standlone) Yarn平台 以及其他支持Spark的云平台

原因二:  Spark框架可以和多种软件进行集成, 集成后, 可以非常方便的对接不同的软件进行数据处理

整个Spark框架通信协议采用的是netty(RPC远程调用框架), 早期的版本采用的 akka

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

留不住的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值