spark理论知识

目录

1.什么是spark

2.认识spark的生态圈

3.MapReduce与spark的对比

4.什么是结构化数据与非结构化数据

5,  Spark三种运行模式:standalone,YARN和Mesos

6,spark应用场景

7,spark运行架构和原理

8,Stage划分的依据是

9,怎么定义一个Task?


1.什么是spark

Spark官网   https://spark.apache.org/

Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters

意思大概是:Spark是一种快速,通用,可扩展的大数据分析引擎

其特点有快速,易用,通用,随处运行,代码简洁

2.认识spark的生态圈

  1. Spark Core :spark的核心,提供底层框架以及核心支持
  2. BlinkDB:一个用于再海量数据上进行交互式SQL查询的大规模并行查询引擎
  3. Spark SQL :可以执行SQL查询,支持基本的SQL语法和hiveQL语法,可读取的数据源包括Hive,HDFS,关系数据库等
  4. SparkStreaming:可以进行实时数据流式计算。
  5. MLbase:专注于机器学习领域,由MLlib,MLl,ML Optimizer和 MLRuntime
  6. GraphX :内置许多与图相关的算法
  7. SparkR: 使得R语言编写的程序不只可以在单机运行,也可以作为spark的作业运行在集群上,极大提升了R语言的数据处理能力
3.MapReduce与spark的对比
  1. 基本原理上

MapReduce基于磁盘的大数据批量处理系统

Spark基于RDD(弹性分布式数据集)数据处理,显示的将RDD数据存储到磁盘和内存中

  1. 模型上

MapReduce可以处理超大规模数据,适合日志分析挖掘等较少的迭代的长任务需求。很好的结合了数据分布式的存储和分布式的计算。

Spark数据的挖掘,机器学习等多伦迭代式的计算任务

  1. 通用性上

Spark:一栈式,主要说的是,Spark不仅仅可以进行离线计算(SparkCore),同时还可以进行流式处理(SparkStreaming)、交互式计算(SparkShell,SparkSQL,StructStreaming,图计算(SparkGraphx),机器学习(SparkMLLib),也就是说我们可以在一个项目中,同时可以使用上述所有的框架,这是Spark相比较于其它框架最大的优势。可以使用多中语言进行编程

MapReduce:要是擅长离线的计算,不擅长实时计算

4.什么是结构化数据与非结构化数据

结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。
一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。(简单来说就是有行有列)
mysql数据库中的数据、csv文件

非结构化数据是指信息没有一个预先定义好的数据模型或者没有以一个预先定义的方式来组织。非结构化数据一般指大家文字型数据,但是数据中有很多诸如时间,数字等的信息。相对于传统的在数据库中或者标记好的文件,由于他们的非特征性和歧义性,会更难理解。
文本、图片、音频/视频信息等等

5,  Spark三种运行模式:standaloneYARNMesos

Standalone:独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统

Yarn:一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序相当于运行于操作系统之上的应用程序

MesosMesos是一个集群管理平台。 可以理解为是一种分布式系统kernel 负责集群资源的分配, 这里的资源指的是CPU资源, 内存资源, 存储资源, 网络资源等。 Mesos可以运行Spark Storm Hadoop Marathon等多种Framework(框架)。

6,spark应用场景

(1)在数据科学应用中 ,数据工程师可以利用Spark进行数据分析与建模

(2)在数据处理应用中,大数据工程师将Spark技术应用于广告、报表、推荐系统等业务中

  1. Spark拥有完整而强大的技术栈,如今已吸引了国内外各大公司的研发与使用,淘宝技术团队使用Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等问题,应用于商品推荐、社区发现等功能。

例:腾讯,雅虎,阿里巴巴等

Spark的概念、特点、应用场景_spark应用场景-CSDN博客

7,spark运行架构和原理

spark架构

spark工作流程

当一个spark应用被提交时,根据提交参数在相应的位置创建driver进程。

 Driver进程启动后,会初始化sparkContext对象,会找到集群master进程,对spark应用程序进行注册

 当master收到spark程序的注册申请之后,会发送请求给worker,进行资源的调度和分配

 worker收到master的请求后,会为spark应用启动executor进程,会启动一个或多个  executor,具体启动多少个,根据配置来启动

 executor启动之后,会向Driver进行反注册,这样Driver就知道哪些executor为它服务了

 Driver会根据我们对RDD定义的操作,提交一堆的task去Executor上执行,task里面执行的就是具体的map、flatMap这些操作

spark的基本概念

DriverProgram(驱动器):运行main()方法并创建SparkContext的进程

ClusterManager(也叫master集群管理器) :用于在集群上申请资源的外部服务

workerNode(工作节点):集群上运行应用程序代码的任意节点

executor(执行器):在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为应用程序存储数据

job(作业) 一个并行计算作业,由一组任务组成,并由spark的行动(action)算子(save、collect)触发启动,每个Job会根据RDD的宽依赖关系被切分很多Stage,每个Stage中包含一组相同的Task

stage(阶段) 每个job会被分为多个stage,每个stage是由一组并行的task组成的,stage的划分依据就是看是否产生了shuflle(宽依赖),遇到一个shuflle操作就会划分为前后两个stage

task:执行器的工作单元

一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成。

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                       

原文链接:Spark 运行架构与原理_简述spark架构及工作原理-CSDN博客

8Stage划分的依据是

Spark Stage划分,就是从最后一个RDD往前推算,遇到窄依赖(NarrowDependency)就将其加入该Stage,当遇到宽依赖(ShuffleDependency)则断开

9,怎么定义一个Task

Spark中的Task主要信息包括 Stage、Partitioner、TaskContext等这些Spark Core的概念,不包括RDD和用户的编程逻辑代码。Driver通过Broadcast把RDD广播给所有的Executor,通过Endpoint把Task点对点的发送到指定的Executor

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值