spark总结

1.spark的概念

spark是基于内存计算的通用大数据并行计算框架,是一个快速、通用可扩展的大数据分析引擎。它给出了大一统的软件开发栈,适用于不同场合的分布式场景,如批处理、迭代算法、交互式查询、流处理、机器学习和图计算。

2.Spark的生态系统

1.Spark Core
  • 功能 :作为整个生态系统的核心引擎,提供基础分布式任务调度、内存管理、容错机制和 RPC 通信3 4
  • 核心抽象:弹性分布式数据集(RDD),支持并行操作和高效数据共享
2. Spark SQL
  • 功能:处理结构化数据,支持 SQL 查询和 DataFrame API,可集成 Hive、Avro 等数据源。
3.Spark Streaming
  • 功能 :实时处理流式数据,将数据按时间窗口切分为微批次(Micro-batch),复用批处理引擎实现低延迟计算4
  • 扩展性:可与 Kafka、Flume 等消息队列集成。
MLlib
  • 功能:提供分布式机器学习算法库,包括分类、回归、聚类等,支持特征工程和模型评估。
4. GraphX
  • 功能:专用于图计算,提供图并行操作(如 PageRank、连通分量分析)和与 RDD 的互操作性。
集群管理器
  • 支持模式:Spark 可运行于 Standalone(内置)、YARN 或 Mesos 等集群管理系统,实现资源动态分配

3.spark 的特点

运行速度快

内存计算与 DAG(有向无环图)执行引擎优化任务调度,减少数据落地次数。

开发效率高

通过高阶函数(如 mapreduce)简化复杂逻辑,减少代码量。Hadoop 需编写多个 MapReduce 任务实现的功能,Spark 可能只需几行代码。

实时与离线处理融合

Spark Streaming 的微批处理(Micro-batch)模型实现准实时响应(延迟可低至数百毫秒)。

多语言支持

提供简洁的 Scala、Java、Python 和 R 接口,降低分布式编程复杂度。

内存大

通过将中间数据缓存到内存中,减少磁盘 I/O 开销,相比 Hadoop MapReduce 提速 10-100 倍,RDD(弹性分布式数据集)支持内存持久化与容错,适用于迭代式算法(如机器学习中的梯度下降)。

使用简单

Spark的易用性主要体现在两个方面。一方面,我们可以用较多的编程语言来写我们的应用程序,比如说Java,Scala,Python,R 和 SQL;另一方面,Spark 为我们提供了超过80个高阶操作,这使得我们十分容易地创建并行应用,除此之外,我们也可以使用Scala,Python,R和SQL shells,以实现对Spark的交互。

4.spark与hadoop的对比

  • spark和hadoop都属于分布式并行机制,MapReduce应用程序是由多个独立的Task进程组成的,Spark应用程序的运行环境是由多个独立的Executor进程构建的临时资源池构成的。 但从单个节点上多个任务的运行模式来看,Hadoop MapReduce采用了多进程模型,而Spark采用了多线程模型
  • 同节点上所有任务运行在一个进程中,有利于共享内存
  • spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是一组分布式的存储在节点内存中的只读性质的数据集,这些集合是弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建.

5.Spark SQL

Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象结构叫做DataFrame的数据模型(即带有Schema信息的RDD),Spark SQL作为分布式SQL查询引擎,让用户可以通过SQL、DataFrames API和Datasets API三种方式实现对结构化数据的处理。

6.Spark SQL的功能

Spark SQL可从各种结构化数据源中读取数据,进行数据分析。

Spark SQL包含行业标准的JDBC和ODBC连接方式,因此它不局限于在Spark程序内使用SQL语句进行查询。

Spark SQL可以无缝地将SQL查询与Spark程序进行结合,它能够将结构化数据作为Spark中的分布式数据集(RDD)进行查询。

7.Spark SQL的架构

Spark SQL架构与Hive架构相比,把底层的MapReduce执行引擎更改为Spark,还修改了Catalyst优化器,Spark SQL快速的计算效率得益于Catalyst优化器。

8.RDD的概念

1.一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,不同节点上进行并行计算

2.RDD提供了一种高度受限的共享内存模型,RDD是只读的记录分区集合,不能直接修改,只能通过在转换的过程中改。

9.RDD的特点

1.高效的容错性

现有容错机制:数据复制或者记录日志RDD具有天生的容错性:血缘关系,重新计算丢失分区,无需回滚系统,重算过程在不同节点之间并行,只记录粗粒度的操作

2.中间结果持久化到内存,数据在内存中的多个RDD操作直接按进行传递,避免了不必要的读写磁盘开销

3.存放的数据可以是JAVA对象,避免了不必要的对象序列化和反序列化。

10.RDD的创建

var lines = sc.textFile("文件路径")//sc是SparkContent对象

lines.filter(x => x.contains("error")).count()//filter是transformation算子不触发计算,count是action算子,会触发计算

11.MapReduce

这个阶段的输出通过某种组合(shuffle)。shuffle后的结果再被分成小份分发到各个节点进行下一步的处理工作。第二步的处理阶段被称为reduce阶段,reduce的输出就是程序的最终执行结果。

MapReduce 程序由 MapperReducerDriver 三部分构成:

  • Mapper:处理输入数据,输出键值对 (key,value)(key,value)
  • Shuffle & Sort :系统自动完成数据分发和排序(核心优化点)1 3
  • Reducer:聚合 Mapper 输出,生成最终结果
相关推荐
hong_zc20 分钟前
服务端高并发分布式结构演进之路
分布式
L耀早睡1 小时前
Spark缓存
大数据·数据库·spark
461K.1 小时前
写spark程序数据计算( 数据库的计算,求和,汇总之类的)连接mysql数据库,写入计算结果
大数据·分布式·spark
caihuayuan42 小时前
鸿蒙AI开发:10-多模态大模型与原子化服务的集成
java·大数据·sql·spring·课程设计
Musennn2 小时前
MySQL多条件查询深度解析
大数据·数据库·mysql
递归尽头是星辰2 小时前
大数据场景下数据导出的架构演进与EasyExcel实战方案
大数据·系统架构·easyexcel·大数据导出·导出优化
Hello World......4 小时前
Java求职面试揭秘:从Spring到微服务的技术挑战
大数据·hadoop·spring boot·微服务·spark·java面试·互联网大厂
yyywoaini~9 小时前
idea中编写spark程序
spark
却道天凉_好个秋10 小时前
系统架构设计(九):分布式架构与微服务
分布式·架构·系统架构
数据与人工智能律师10 小时前
虚拟主播肖像权保护,数字时代的法律博弈
大数据·网络·人工智能·算法·区块链