大数据之spark_spark简介

article/2025/9/15 9:19:16

什么是Spark

Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache的顶级项目,2014年5月发布spark1.0,2016年7月发布spark2.0,2020年6月18日发布spark3.0.0

在这里插入图片描述

Spark的特点

Speed:快速高效
在这里插入图片描述
Hadoop的MapReduce作为第一代分布式大数据计算引擎,在设计之初,受当时计算机硬件条件所限(内存、磁盘、cpu等),为了能够计算海量数据,需要将中间结果保存到HDFS中,那么就要频繁读写HDFS从而使得网络IO和磁盘IO成为性能瓶颈。Spark可以将中间结果写到本地磁盘或将中间cache到内存中,节省了大量的网络IO和磁盘IO开销。并且Spark使用更先进的DAG任务调度思想,可以将多个计算逻辑构建成一个有向无环图,并且还会将DAG先进行优化后再生成物理执行计划,同时 Spark也支持数据缓存在内存中的计算。性能比Hadoop MapReduce快100倍。即便是不将数据cache到内存中,其速度也是MapReduce10 倍以上。

Ease of Use:简洁易用
在这里插入图片描述

Spark支持 Java、Scala、Python和R等编程语言编写应用程序,大大降低了使用者的门槛。自带了80多个高等级操作算子,并且允许在Scala,Python,R 的使用命令进行交互式运行,可以非常方便的在Spark Shell中地编写spark程序。

Generality:通用、全栈式数据处理
在这里插入图片描述

Spark提供了统一的大数据处理解决方案,非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。 同时Spark还支持SQL,大大降低了大数据开发者的使用门槛,同时提供了SparkStream和Structed Streaming可以处理实时流数据;MLlib机器学习库,提供机器学习相关的统计、分类、回归等领域的多种算法实现。其高度封装的API 接口大大降低了用户的学习成本;Spark GraghX提供分布式图计算处理能力;PySpark支持Python编写Spark程序;SparkR支持R语言编写Spark程序。

Runs Everywhere:可以运行在各种资源调度框架和读写多种数据源
在这里插入图片描述

Spark支持的多种部署方案:Standalone是Spark自带的资源调度模式;Spark可以运行在Hadoop的YARN上面;Spark 可以运行在Mesos上(Mesos是一个类似于YARN的资源调度框架);Spark还可以Kubernetes实现容器化的资源调度

丰富的数据源支持。Spark除了可以访问操作系统自身的本地文件系统和HDFS之外,还可以访问 Cassandra、HBase、Hive、Alluxio(Tachyon)以及任何 Hadoop兼容的数据源。这极大地方便了已经 的大数据系统进行顺利迁移到Spark。

Spark与MapReduce的对比

框架 优点 缺点
MapReduce 历史悠久、稳定 编程API不灵活、速度慢、只能做离线计算
Spark 通用、编程API简洁、快 跟MapReduce比暂无缺点

面试题:MapReduce和Spark的本质区别:

1.MR只能做离线计算,如果实现复杂计算逻辑,一个MR搞不定,就需要将多个MR按照先后顺序连成一串,一个MR计算完成后会将计算结果写入到HDFS中,下一个MR将上一个MR的输出作为输入,这样就要频繁读写HDFS,网络IO和磁盘IO会成为性能瓶颈。从而导致效率低下。

2.既可以做离线计算,有可以做实时计算,提供了抽象的数据集(RDD、Dataset、DataFrame、DStream)
有高度封装的API,算子丰富,并且使用了更先进的DAG有向无环图调度思想,可以对执行计划优化后在执行,并且可以数据可以cache到内存中进行复用。

注意:MR和Spark在Shuffle时数据都落本地磁盘

park 3.0新特性

2020年6月18日,开发了近两年(自2018年10月份至今)的Apache Spark 3.0.0 正式发布,
Apache Spark 3.0.0版本解决并修复了包含3400多个补丁,是开源社区做出巨大贡献的结晶,在Python和SQL功能方面带来了重大进展并且将重点聚焦在了开发和生产的易用性上。同时,今年也是Spark开源10周年,这些举措反映了Spark自开源以来,是如何不断的满足更广泛的受众需求以及更多的应用场景。

spark3.0新特性介绍连接:https://spark.apache.org/releases/spark-release-3-0-0.html
在这里插入图片描述
重点:改进的Spark SQL引擎
即使由于缺乏或者不准确的数据统计信息和对成本的错误估算导致生成的初始计划不理想,但是自适应查询执行(Adaptive Query Execution)通过在运行时对查询执行计划进行优化,允许Spark Planner在运行时执行可选的执行计划,这些计划将基于运行时统计数据进行优化,从而提升性能。

动态合并shuffle partitions
动态调整join策略
动态优化倾斜的join
动态分区裁剪
ANSI SQL兼容性
Join hints

Spark架构体系

standalone client模式
在这里插入图片描述
standalone cluster模式
在这里插入图片描述
Spark On YARN cluster模式
在这里插入图片描述
Spark执行流程简介
在这里插入图片描述
Job:RDD每一个行动操作都会生成一个或者多个调度阶段 调度阶段(Stage):每个Job都会根据依赖关系,以Shuffle过程作为划分,分为Shuffle Map Stage和Result Stage。每个Stage对应一个TaskSet,一个Task中包含多Task,TaskSet的数量与该阶段最后一个RDD的分区数相同。 
Task:分发到Executor上的工作任务,是Spark的最小执行单元 
DAGScheduler:DAGScheduler是将DAG根据宽依赖将切分Stage,负责划分调度阶段并Stage转成TaskSet提交给TaskScheduler 
TaskScheduler:TaskScheduler是将Task调度到Worker下的Exexcutor进程,然后丢入到Executor的线程池的中进行执行

Spark中重要角色
Master :是一个Java进程,接收Worker的注册信息和心跳、移除异常超时的Worker、接收客户端提交的任务、负责资源调度、命令Worker启动Executor。
Worker :是一个Java进程,负责管理当前节点的资源管理,向Master注册并定期发送心跳,负责启动Executor、并监控Executor的状态。
SparkSubmit :是一个Java进程,负责向Master提交任务。
Driver :是很多类的统称,可以认为SparkContext就是Driver,client模式Driver运行在SparkSubmit进程中,cluster模式单独运行在一个进程中,负责将用户编写的代码转成Tasks,然后调度到Executor中执行,并监控Task的状态和执行进度。
Executor :是一个Java进程,负责执行Driver端生成的Task,将Task放入线程中运行。
Spark和Yarn角色对比
在这里插入图片描述

Spark环境搭建

1架构说明(standalone模式)

standalone模式是Spark自带的分布式集群模式,不依赖其他的资源调度框架

2搭建步骤
① 下载spark安装包,下载地址:https://spark.apache.org/downloads.html
在这里插入图片描述

② 上传spark安装包到Linux服务器上
③ 解压spark安装包

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /bigdata/

④ 进入到spark按照包目录并将conf目录下的spark-env.sh.template重命名为spark-env.sh,再修改

export JAVA_HOME=/opt/apps/jdk1.8.0_251/
export SPARK_MASTER_HOST=linux01

⑤ 将conf目录下的slaves.template重命名为slaves并修改,指定Worker的所在节点

linux01
linux02
linux03

⑥ 将配置好的spark拷贝到其他节点

for i in {2..3}; do scp -r spark-3.0.0-bin-hadoop3.2 linux0$i:$PWD; done

3启动Spark集群
① 在Spark的安装目录执行启动脚本

sbin/start-all.sh

② 执行jps命令查看Java进程

jps

在ndoe-1上可用看见Master进程,在其他的节点上可用看见到Worker

③ 访问Master的web管理界面,端口8080

在这里插入图片描述

4spark-env.sh中可以设置一些重要参数

export SPARK_WORKER_CORES =8   #指定worker可用的逻辑核数,逻辑核数一般为实际核数的两倍最佳
export SPARK_WORKER_MEMORY=2g  #指定worker可用的内存大小

5standalone模式高可用部署
spark的standalone模式可用启动两个以上的Master,但是需要依赖zookeeper进行协调,所有的节点启动后,都想zk注册

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node-1.51doit.com:2181,node-2.51doit.com:2181,node-3.51doit.com:2181 -Dspark.deploy.zookeeper.dir=/spark"

启动Spark Shell编程

什么是Spark Shell
spark shell是spark中的交互式命令行客户端,可以在spark shell中使用scala编写spark程序,启动后默认已经创建了SparkContext,别名为sc

启动Spark Shell

/bin/spark-shell --master spark://linux01:7077 --executor-memory 1g --total-executor-cores 12

启动shell客户端之后,就会在每个节点上都生成一个Executor,每个Executor分配的资源就是我们输入登录命令时所设置的大小
参数说明:
–master 指定masterd地址和端口,协议为spark://,端口是RPC的通信端口(不指定master就会在本地运行spark,不会进入到集群中)
–executor-memory 指定每一个executor的使用的内存大小(不指定内存大小,就默认分配1g)
–total-executor-cores指定整个application总共使用了cores(不指定cores,就默认将所有的cores都分配给它)
在这里插入图片描述

在shell中编写第一个spark程序

sc.textFile("hdfs://linux01:8020/words.txt").flatMap(_.split("\\s+")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://linux01:8020/out")

http://chatgpt.dhexx.cn/article/pe5kUrtJ.shtml

相关文章

开源项目_springboot的答题系统+spark大数据实时分析

一、项目展示 在这里,主要展示大数据图表分析的几个页面。更多精彩由您自己发掘! 图1 饼状图 图2 堆叠图 图3 柱状图 二、项目介绍 本项目分为两个模块,第一个为java语言基于springboot实现的答题模块,另一个为scala语言基于spar…

Spark大数据开发技术简介

Spark大数据开发技术简介 轻量级的内存集群计算平台 文章目录 Spark大数据开发技术简介历史沿革Spark的优点对比Apache Spark堆栈中的不同组件基本原理架构组成部署和体系结构Spark运行模式 页面 历史沿革 Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架最…

【大数据】【Spark】Spark概述

由于Spark程序的编写最好使用Scala语言,可参照博主以下Scala入门文章 链接:https://blog.csdn.net/treesorshining/article/details/124697102 文章目录 1.Spark概念2.Spark与Hadoop的关系1.从时间节点上来看2.从功能上来看 3.Spark与Hadoop的比较4.Spar…

Spark大数据系列教程持续更新

Spark大数据系列教程 想学习大数据的福利来了,由于近期工作繁忙,本人已将自己学习大数据的过程陆续开始更新: Spark大数据系列:一、RDD详解Spark大数据系列 二、Spark入门程序WordCount详解(Scala版本)Spark大数据系列&#xff…

大数据面试题——spark

文章目录 讲一下spark 的运行架构一个spark程序的执行流程讲一下宽依赖和窄依赖spark的stage是如何划分的Spark的 RDD容错机制。checkpoint 检查点机制?RDD、DAG、 Stage、 Task 、 Job Spark的shuffle介绍Spark为什么快,Spark SQL 一定比 Hive 快吗Spar…

引爆Spark大数据引擎的七大工具

原文名称:7 tools to fire up Sparks big data engine Spark正在数据处理领域卷起一场风暴。让我们通过本篇文章,看看为Spark的大数据平台起到推波助澜的几个重要工具。 Spark生态系统众生相 Apache Spark不仅仅让大数据处理起来更快,还让大…

大数据面试题Spark篇(1)

目录 1.spark数据倾斜 2.Spark为什么比mapreduce快? 3.hadoop和spark使用场景? 4.spark宕机怎么迅速恢复? 5. RDD持久化原理? 6.checkpoint检查点机制 7.checkpoint和持久化的区别 8.说一下RDD的血缘 9.宽依赖函数&#…

大数据_Spark常见组件

Spark 是一个分布式数据处理引擎,其各种组件在一个集群上协同工作,下面是各个组件之间的关系图。 Spark驱动器 作为 Spark 应用中负责初始化 SparkSession 的部分,Spark 驱动器扮演着多个角色:它与集群管理器打交道;它…

大数据Spark框架

Spark 是一种基于内存快速、通用、可扩展的大数据分析计算引擎。 Spark 优势: Spark核心单元RDD适合并行计算和重复使用;RDD模型丰富,使用灵活;多个任务之间基于内存相互通信(除了shuffle会把数据写入磁盘&#xff0…

Windows下的Spark环境配置(含IDEA创建工程--《Spark大数据技术与应用》第九章-菜品推荐项目)

文章目录 前言一、下载资源二、本地配置步骤1.解压2.引入本地环境3.启动HADOOP文件4.进行Spark测试 三、IDEA引入Spark项目1.idea按照scala插件2.新建scala项目3.配置项目4.新建scala类 前言 本文适用于《Spark大数据技术与应用》第九章-菜品推荐项目环境配置: 跟…

Spark开发:Spark大数据开发编程示例

大数据开发人员,根据企业大数据处理的需求,进行大数据平台系统的搭建,比如说Hadoop,比如说Spark,而不同的大数据处理框架,采取不同的编程语言和编程模型,这就需要技术开发人员要掌握相关的技术。…

《Spark大数据技术与应用》肖芳 张良均著——课后习题

目录 教材知识汇总课后习题第一章 Spark概述Spark的特点Spark生态圈Spark应用场景 第二章 Scala基础匿名函数SetMapmapflatMapgroupBy课后习题 第三章 Spark编程教材52页任务3.2及之后的任务 重点复习sortBy排序collect查询distinct去重zip实训题实训1实训2选择题编程题 第四章…

Spark大数据技术与应用 第一章Spark简介与运行原理

Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会,成为了Apache Spark。由Scala语言实现的专门为大规模数据处理而设计的快速通用…

大数据之Spark:Spark 基础

目录 1、Spark 发展史2、Spark 为什么会流行3、Spark 特点4、Spark 运行模式 1、Spark 发展史 2009 年诞生于美国加州大学伯克利分校 AMP 实验室; 2014 年 2 月,Spark 成为 Apache 的顶级项目; Spark 成功构建起了一体化、多元化的大数据处…

大数据之spark详解

目录 什么是spark: 功能历史上和hadoop的区别: spark的五大核心模块: ➢ Spark Core 什么是spark: 简单一点Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。属于mapreduce的加强版本,结合了其优点…

09.大数据技术之Spark

文章目录 一、Spark概述1、概述2、Spark特点 二、Spark角色介绍及运行模式1、集群角色2、运行模式 三、Spark集群安装1.Local模式1.下载文件2.解压缩3、修改配置文件4.配置环境变量5.启动服务6.启动客户端 2.Standalone模式1.停止服务2.修改配置文件spark-env.sh3.修改配置文件…

大数据框架之Spark详解

目录 1 Spark概述1.1 Spark是什么?1.2 Spark内置模块1.3 Spark 特点 2 RDD概述2.1 什么是RDD?2.2 RDD的属性2.3 RDD特点2.4 弹性体现在哪?2.5 分区2.6 分区2.7 依赖2.8 缓存2.9 CheckPoint 1 Spark概述 1.1 Spark是什么? Spark是…

大数据学习 之 Spark 概述

文章目录 一、Spark简介Spark与Hadoop的区别部署模式 二、 Spark架构1.Driver2.Executor3.Master & Worker4.Cluster manager5.ApplicationMaster补充点:Stage执行过程 三、Shuffle机制shuffle介绍Shuffle的影响导致Shuffle的操作 四、RDD(弹性分布式…

大数据技术---Spark

一、Spark简介 1、Spark概述 Spark:由美国加州伯克利大学的AMP实验室于2009年开发,基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。 三大分布式计算系统开源项目:Hadoop、Spark、Storm。 Spark的…

KB、MB、GB等和KiB、MiB、GiB等的区别

今天装系统RHEL7.7,在分区时发现单位变成MiB、GiB了,有点奇怪就查了查。 区别: KB、MB、GB等单位以10为底数的指数 KiB、MiB、GiB等单位是以2为底数的指数 如:1KB10^31000, 1MB10^610000001000KB,1GB10^910000000001000MB,而 …