加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

基于spark的大数据分析引擎

发布时间:2022-10-30 03:00:08 所属栏目:大数据 来源:互联网
导读: 1.Spark是什么
学习或做大数据开发的同学,都听说或者使用过Spark,从这部分开始,ShowMeAI带大家一起来学习一下Spark相关的知识。
Apache Spark是一种用于大数据工作负载的分布式开源处理

1.Spark是什么

学习或做大数据开发的同学,都听说或者使用过Spark,从这部分开始,ShowMeAI带大家一起来学习一下Spark相关的知识。

Apache Spark是一种用于大数据工作负载的分布式开源处理系统。它使用内存中缓存和优化的查询执行方式,可针对任何规模的数据进行快速分析查询。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量的廉价硬件之上,形成集群。

大数据分析挖掘框架; Spark初步; Spark是什么; Spark; 7-1

Spark提供使用Java、Scala、Python 和 R 语言的开发 API,支持跨多个工作负载重用代码—批处理、交互式查询、实时分析、机器学习和图形处理等。Apache Spark 已经成为最受欢迎的大数据分布式处理框架之一。

2.Spark的特点

Apache Spark是个开源和兼容Hadoop的集群计算平台。由加州大学伯克利分校的AMPLabs开发,作为Berkeley Data Analytics Stack(BDAS)的一部分,当下由大数据公司Databricks保驾护航,更是Apache旗下的顶级项目。

1)Apache Spark堆栈中的不同组件

大数据分析挖掘框架; Spark初步; Spark的特点; Apache Spark堆栈中的不同组件; 7-2

2)Apache Spark的优势

大数据分析挖掘框架; Spark初步; Spark的特点; Apache Spark优势; 7-3

大数据分析挖掘框架; Spark初步; Spark的特点; Apache Spark优势; 7-4

3.Spark作业与调度

Spark的核心是作业和任务调度系统,它可以保障各种任务高效完整地运行。

1)Spark作业和任务调度系统

Spark通过作业和任务调度系统,能够有效地进行调度完成各种任务,底层的巧妙设计是对任务划分DAG和容错,使得它对低层到顶层的各个模块之间的调用和处理显得游刃有余。

大数据分析挖掘框架; Spark初步; Spark作业与调度; Spark作业和任务调度系统; 7-5

2)基本概念一览 概念解释

作业(Job)

RDD中由行动操作所生成的一个或多个调度阶段。

调度阶段(Stage)

每个Job作业会因为RDD之间的依赖关系拆分成多组任务集合,称为调度阶段,简称阶段,也叫做任务集(TaskSet)。调度阶段的划分是由DAGScheduler(DAG调度器)来划分的。调度阶段有Shuffle Map Stage和Result Stage两种。

任务(Task)

分发到Executor上的工作任务,是Spark实际执行应用的最小单元。Task会对RDD的partition数据执行指定的算子操作,比如flatMap、map、reduce等算子操作,形成新RDD的partition。

DAGScheduler(DAG调度器)

DAGScheduler是面向Stage(阶段)的任务调度器,负责接收Spark应用提交的作业,根据RDD的依赖关系划分调度阶段,并提交Stage(阶段)给TaskScheduler。

TaskScheduler(任务调度器)

TaskScheduler是面向任务的调度器大数据引擎,它接收DAGScheduler提交过来的Stage(阶段),然后把任务分发到Worker节点运行,由Worker节点的Executor来运行该任务。

3)Spark作业和调度流程

Spark的作业调度主要是指基于RDD的一系列操作构成一个作业,然后在Executor中执行。这些操作算子主要分为转换操作和行动操作,对于转换操作的计算是lazy级别的,也就是延迟执行,只有出现了行动操作才触发作业的提交。

在Spark调度中最重要的是DAGScheduler和TaskScheduler两个调度器:其中DAGScheduler负责任务的逻辑调度,将Job作业拆分成不同阶段的具有依赖关系的任务集,而TaskScheduler则负责具体任务的调度执行。

大数据分析挖掘框架; Spark初步; Spark作业与调度; 流程; 7-6

4.RDD / DataFrame与Dataset 1)Spark API的历史

Apache Spark 中有RDD,DataFrame和Dataset三种不同数据API,发展如下:

大数据分析挖掘框架; Spark初步; RDD, DataFrame与Dataset; Spark API的历史; 7-7

RDD:

DataFrame:

Dataset:

2)Spark API简介

在Spark 2.0中对Dataframe和Dataset进行了统一,如下图所示:

3)Spark的逻辑结构

Spark的整体逻辑结构如下图所示,包含不同的层级及组成部分:

大数据分析挖掘框架; Spark初步; RDD, DataFrame与Dataset; Spark的逻辑结构; 7-9

5.Spark2.0与SparkSession 1)SparkSession的引入

Spark2.0中引入了SparkSession的概念,它为用户提供了一个统一的切入点来使用Spark的各项功能,借助SparkSession,我们可以使用DataFrame和Dataset的各种API,应用Spark的难度也大大下降。

在Spark的早期版本,SparkContext是进入Spark的切入点,RDD数据基于其创建。但在流处理、SQL等场景下有其他的切入点,汇总如下:

大数据分析挖掘框架; Spark初步; Spark2.0与SparkSession; SparkSession引入; 7-10

在Spark高版本中,DataSet和DataFrame提供的API逐渐成为新的标准API,需要一个切入点来构建它们。所以,Spark 2.0引入了一个新的切入点(entry point):SparkSession。

2)创建SparkSession

大数据分析挖掘框架; Spark初步; Spark2.0与SparkSession; 创建SparkSession; 7-11

6.结构化流与连续性应用 1)Continuous Applications

Spark2.0中提出一个概念,Continuous Applications(连续应用程序)。

Spark Streaming等流式处理引擎,致力于流式数据的运算:比如通过map运行一个方法来改变流中的每一条记录,通过reduce可以基于时间做数据聚合。但是很少有只在流式数据上做运算的需求,流式处理往往是一个大型应用的一部分。

大数据分析挖掘框架; Spark初步; 结构化流与连续性应用; Continuous Applications; 7-12

Continuous Applications提出后,实时运算作为一部分,不同系统间的交互等也可以由Structured Streaming来处理。

2)Structured Streaming

Structured Streaming是一个建立在Spark Sql引擎上的可扩展、高容错的流式处理引擎。它使得可以像对静态数据进行批量处理一样来处理流式数据。

大数据分析挖掘框架; Spark初步; 结构化流与连续性应用; Structured Streaming; 7-13

7.参考资料 【大数据技术与处理】推荐阅读 ShowMeAI 系列教程推荐

大数据 大数据_大数据之路阿里巴巴大数据实践_大数据引擎

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!