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 输出,生成最终结果
相关推荐
优秀的颜35 分钟前
计算机基础知识(第五篇)
java·开发语言·分布式
mazhafener1237 小时前
智慧照明:集中控制器、单双灯控制器与智慧灯杆网关的高效协同
大数据
打码人的日常分享7 小时前
物联网智慧医院建设方案(PPT)
大数据·物联网·架构·流程图·智慧城市·制造
棠十一8 小时前
Rabbitmq
分布式·docker·rabbitmq
Lansonli8 小时前
大数据Spark(六十一):Spark基于Standalone提交任务流程
大数据·分布式·spark
Rverdoser10 小时前
电脑硬盘分几个区好
大数据
傻啦嘿哟10 小时前
Python 数据分析与可视化实战:从数据清洗到图表呈现
大数据·数据库·人工智能
Theodore_102210 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构
簌簌曌10 小时前
CentOS7 + JDK8 虚拟机安装与 Hadoop + Spark 集群搭建实践
大数据·hadoop·spark
Theodore_102212 小时前
大数据(1) 大数据概述
大数据·hadoop·数据分析·spark·hbase