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 输出,生成最终结果
相关推荐
小钊(求职中)3 分钟前
ElasticSearch从入门到精通-覆盖DSL操作和Java实战
java·大数据·elasticsearch·搜索引擎·全文检索
西电研梦1 小时前
稳扎稳打,25西电生命科学技术学院(考研录取情况)
大数据·考研·生物医学工程·西安电子科技大学
ICT_SOLIDWORKS1 小时前
智诚科技苏州SOLIDWORKS授权代理商的卓越之选
大数据·人工智能·科技·软件工程
24k小善2 小时前
FlinkUpsertKafka深度解析
java·大数据·flink·云计算
小名叫咸菜3 小时前
spark总结
spark
码熔burning3 小时前
【MQ篇】RabbitMQ之消息持久化!
java·分布式·rabbitmq·mq
caihuayuan44 小时前
【docker&redis】用docker容器运行单机redis
java·大数据·sql·spring·课程设计
Gvemis⁹4 小时前
Spark总结
大数据·分布式·spark
码熔burning4 小时前
【MQ篇】RabbitMQ之消费失败重试!
java·分布式·rabbitmq·mq
灵途科技4 小时前
NEPCON China 2025 | 具身智能时代来临,灵途科技助力人形机器人“感知升级”
大数据·人工智能