Spark概述

1.什么是Spark?

Spark是一个开源的大数据处理和分析引擎。

Spark最初由美国加州大学伯克利分校的AMP实验室于2009年开发,基于内存计算,适用于构建大型、低延迟的数据分析应用程序。Spark支持多种编程语言,如JavaScalaPythonR,并提供了高级别的API,用于在分布式环境中进行大规模数据处理和分析。Spark的核心组件包括Spark CoreSpark SQLSpark StreamingMLlib等,它能够处理结构化数据、实时数据,并支持机器学习算法。Spark以其高性能、易用性和灵活性而闻名,能够在内存中保留数据,避免磁盘I/O的开销,从而提高计算速度和吞吐量。此外,Spark可以与Hadoop分布式文件系统(HDFS)等数据源集成,支持批处理、迭代算法、交互式查询和流处理等多种计算模式。

2.了解Spark的特点

速度快

速度快 由于ApacheSpark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍 Spark处理数据与MapReduce处理数据相比,有如下两个不同点: Spark处理数据时,可以将中间处理结果数据存储到内存中 Spark Job调度以DAG方式,并且每个任务Task执行以线程方式,并不是MapReduce以进程方式执行

通用性强

在Spark的基础上,Spark还提供了包括Spark SQL、Spark Streaming、MLib及GraphX在内的多个工具库,我们可以在一个应用中无缝的使用这些工具库

易于使用

Spark的版本已经更新到了Spark3.1.2(截止日期2021.06.01),支持了包括Java、Scala、Python、R和SQL语言在内的多种语言。为了兼容Spark2.x企业级应用场景,Spark仍然持续更新Spark2版本

运行方式

Spark支持多种运行方式,包括在Hadoop和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云Kubernets(Spark2.3开始支持)

搭建spark集群

搭建Spark集群有多种模式,包括Local模式Standalone模式YARN模式以及Spark on Hive模式。以下是不同模式下的搭建步骤:

  • Local模式。首先下载Spark的jar包,然后解压并运行Spark程序。这种模式适合本地测试和调试。
  • Standalone模式。需要下载Spark的jar包,上传并解压,配置环境变量,修改配置文件(例如spark-defaults.conf和spark-env.sh),将Spark安装包分发到其他节点,启动集群,并在Web界面查看Spark UI。
  • YARN模式。需要开启HDFS和YARN服务,修改Hadoop配置文件(例如yarn-site.xml),分发Spark Jar包到HDFS,并测试Spark程序。
  • Spark on Hive模式。需要文件复制、驱动程序拷贝和重启集群。

此外,在搭建Spark集群之前,应先搭建好Hadoop集群,因为Spark依赖于HDFS作为存储系统。在生产环境中,Spark通常与Hive、Kafka等其他组件一起使用,以提高数据处理和分析的效率

spark作业运行流程

Spark作业的运行流程主要包括以下几个步骤:

  1. 作业提交。用户通过Spark客户端(如PysparkSpark shell)提交一个Spark应用程序到集群。客户端负责将应用程序的代码、依赖关系以及配置参数打包成一个JAR包或Python文件,并提交给Spark集群。
  1. 创建SparkContext。在集群上的某个节点上,Spark驱动程序(Driver)的main方法被执行,创建了一个SparkContext对象。这个对象是应用程序与集群进行通信的主要入口点。
  2. 创建RDD。SparkContext负责创建RDD(弹性分布式数据集)对象,并计算RDD之间的依赖关系,形成一个有向无环图(DAG)。
  3. 划分Stage。DAGScheduler根据RDD之间的宽窄依赖关系,将DAG划分为多个Stage。每个Stage包含一个或多个Task,这些Task会被提交给TaskScheduler。
  1. 资源分配。TaskScheduler接收DAGScheduler提交的TaskSet,并为每个Task申请资源,然后将Task发送到集群中的Worker节点。
  2. 执行Task。Worker节点上的Executor启动并执行Task。Executor负责将Task转换为具体的计算任务,并在本地或集群上运行这些任务。
  3. 结果收集与驱动程序。Executor执行完Task后,将结果发送回Driver。Driver负责收集这些结果,并可能将它们发送到外部存储系统,如HDFSHive

Spark作业的运行流程依赖于Spark的组件,包括SparkContext、DAGScheduler、TaskScheduler、Executor和Driver,它们共同协作以高效地处理和管理大规模数据。

Spark 核心数据结构:RDD

rdd  弹性分布式数据集  是spark框架自己封装的数据类型,用来管理内存数据

数据集:

rdd数据的格式  类似Python中hive中的该结构叫数组

rdd提供算子(方法) 方便开发人员进行调用计算数据

在pysaprk中本质是定义一个rdd类型用来管理和计算内存数据

分布式 : rdd可以时使用多台机器的内存资源完成计算

弹性: 可以通过分区将数据分成多份  每份数据对应一个task线程处理

python 也有自己的数据类型  使用的是单机资源管理数据

数据类型可以通过封装类的形式进行定义,所有list,dict在Python中本质是一个类

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值