首页 > 其他分享 >大数据技术-spark

大数据技术-spark

时间:2023-03-14 19:33:45浏览次数:44  
标签:SparkContext Task 技术 RDD Executor spark 数据 Spark

Spark是什么

Apache Spark是一个分布式、内存级计算框架, 是一个大数据处理框架

基本概念

Application:用户编写的Spark应用程序。
Driver:Spark中的Driver即运行上述Application的main函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。
Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task。
RDD:弹性分布式数据集,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
DAG:有向无环图,反映RDD之间的依赖关系。
Task:运行在Executor上的工作单元。
Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。
Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表一组关联的,相互之间没有Shuffle依赖关系的任务组成的任务集。
Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型

  1. Standalon : spark原生的资源管理,由Master负责资源的分配
  2. Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架
  3. Hadoop Yarn: 主要是指Yarn中的ResourceManager

Spark的生态体系

image
Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的
Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。
Spark Streaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据
MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。
GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作

Spark架构

image

Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器
Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。
Driver: 运行Application 的main()函数
Executor:执行器,是为某个Application运行在worker node上的一个进程

运行过程

构建Spark Application的运行环境,启动SparkContext
SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend,
Executor向SparkContext申请Task
SparkContext将应用程序分发给Executor
SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行
Task在Executor上运行,运行完释放所有资源

RDD

一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群的不同节点上进行并行计算。

RDD提供了一种高端受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集创建RDD,或者通过在其他RDD上执行确定的转换操作(如map,join和group by)而创建得到新的RDD。

RDD执行过程:

RDD读入外部数据源进行创建
RDD经过一系列的转换(Transformation)操作,没一次都会产生不同的RDD供下一个转换操作使用
最后一个RDD经过“动作”操作进行转换并输出到外部数据源
优点:惰性调用、管道化、避免同步等待,不需要保存中间结果。这和Java8中Stream的概念极其类似

Spark和hadoop

Hadoop有两个核心模块,分布式存储模块HDFS和分布式计算模块Mapreduce
spark本身并没有提供分布式文件系统,因此spark的分析大多依赖于Hadoop的分布式文件系统HDFS
Hadoop的Mapreduce与spark都可以进行数据计算,而相比于Mapreduce,spark的速度更快并且提供的功能更加丰富
关系图如下:
image

标签:SparkContext,Task,技术,RDD,Executor,spark,数据,Spark
From: https://www.cnblogs.com/ermao1993/p/17216028.html

相关文章

  • 数据结构-C语言
    一、基本定义1、数据数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据结构:是相互之间存在一种或多种特定关系......
  • Vue监测数据改变的原理
    目录​​1.Vue数据更新却监测不到的问题​​​​2.Vue监测数据改变的原理​​​​2.1Vue是如何监测对象中数据的改变的​​​​2.2简单模拟Vue监视属性的代码​​​​2.3......
  • Google earth engine——全球森林碳通量(2001-2021)数据集可视化含代码
    全球森林碳通量(2001-2021)森林碳净通量是指2001年至2021年期间森林与大气之间的碳净交换量,计算方法是模型期间森林排放的碳与森林移除(或封存)的碳之间的平衡(兆克CO2排放量/公......
  • Mysql数据库未添加索引引发的生产事故
    最近开发的新功能主要是首页的红点提示功能,某个用户登录系统app,然后进入某一个功能模块,在该功能下面有很多地方可以操作,新功能就是根据用户信息查询当月是否存在新的......
  • 12、MySQL数据库配置
    MySQL系统数据库MySQL系统数据库主要包括以下几个:mysql数据库:用于存储MySQL的权限信息和系统变量等,包括user表、db表、host表等,这些表是管理MySQL权限的重要基础......
  • 基于交换机、智能网卡、光模块的400G数据中心网络解决方案
    400G数据中心网络市场发展迅猛,更大吞吐量的交换芯片、更高速率的光连接件、爆炸式的数据增长,在合力加速数据中心网络的发展。除此之外,随着5G的蓬勃发展和基于视频的数据传输......
  • Insert 插入数据时提示ora-03113错误
    故障现象:下午15:00时,业务反馈业务某张表无法进行数据插入,只要Insert就会提示ora-03113,并将会话直接Kill掉。错误分析:查看alert日志发现有ora-07445的错误ORA-07445:e......
  • 如何将自定义的日志直接写入到 mysql 数据库中?
    要将自定义的日志直接写入MySQL数据库中,您可以使用以下步骤:安装MySQL数据库,并创建一个新的数据库和表来存储日志数据。在您的代码中,使用MySQL连接器来连接到MySQL数据库。创......
  • python数据分析与挖掘实战第八章
    #8-1importnumpyasnpimportpandasaspdinputfile='data4/GoodsOrder.csv'data=pd.read_csv(inputfile,encoding='gbk')data.info()data=data['id']de......
  • Gin postform 接参数数据参数
    如下服务端代码packagemainimport( "fmt" "github.com/gin-gonic/gin" "net/http")funcmain(){ engine:=gin.Default() engine.POST("/data",handData......