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 输出,生成最终结果
相关推荐
五阿哥永琪1 分钟前
SQL中的函数--开窗函数
大数据·数据库·sql
程序员小羊!3 分钟前
数仓数据基线,在不借助平台下要怎么做?
大数据·数据仓库
火山引擎开发者社区2 小时前
两大模型发布!豆包大模型日均使用量突破 50 万亿 Tokens
大数据·人工智能
2 小时前
TIDB——TIKV——raft
数据库·分布式·tidb
Hello.Reader2 小时前
Flink SQL 的 UNLOAD MODULE 模块卸载、会话隔离与常见坑
大数据·sql·flink
禾高网络3 小时前
互联网医院系统,互联网医院系统核心功能及技术
java·大数据·人工智能·小程序
AI营销实验室3 小时前
原圈科技AI CRM系统:数据闭环与可视化革新的行业突破
大数据·人工智能
Deepoch3 小时前
仓储智能化新思路:以“渐进式升级”破解物流机器人改造难题
大数据·人工智能·机器人·物流·具身模型·deepoc·物流机器人
永亮同学4 小时前
【探索实战】从零开始搭建Kurator分布式云原生平台:详细入门体验与功能实战分享!
分布式·云原生·交互
シ風箏5 小时前
Flink【基础知识 01】简介+核心架构+分层API+集群架构+应用场景+特点优势(一篇即可大概了解Flink)
大数据·架构·flink·bigdata