Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样

1. Spark 框架概述

Spark 是加州大学伯克利分校AMP实验室(Algorithms Machines and People Lab)开发的通用大数据框架。Spark生态圈也称为BDAS,是伯克利AMP实验室所开发的,力图在算法(Algorithms)、机器(Machines)和人(Person)三种之间通过大规模集成来展现大数据应用的一个开源平台。AMP实验室运用大数据、云计算等各种资源以及各种灵活的技术方案,对海量数据进行分析并转化为有用的信息,让人们更好地了解世界。

Spark的发展历史,经历过几大重要阶段,如下图所示:
Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第1张图片

Spark 是一种快速、通用、可扩展的大数据分析引擎,2009 年诞生于加州大学伯克利分校 AMPLab,2010 年开源, 2013年6月成为Apache孵化项目,2014年2月成为 Apache 顶级项目,用 Scala进行编写项目框架。

1.1 Spark 是什么

定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。

  • 官方网址:http://spark.apache.org/、https://databricks.com/spark/about

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第2张图片

  • 官方定义:

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第3张图片

Spark 最早源于一篇论文 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing,该论文是由加州大学柏克莱分校的 Matei Zaharia 等人发表的。论文中提出了一种弹性分布式数据集(即 RDD)的概念,原文开头对其的解释是:

在这里插入图片描述

翻译过来就是:RDD 是一种分布式内存抽象,其使得程序员能够在大规模集群中做
内存运算,并且有一定的容错方式
。而这也是整个 Spark 的核心数据结构,Spark 整个平
台都围绕着RDD进行。

1.2 Spark 四大特点

Spark 使用Scala语言进行实现,它是一种面向、函数式编程语言,能够像操作本地集合一样轻松的操作分布式数据集。Spark具有运行速度快、易用性好、通用性强和随处运行等特点。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第4张图片

1.2.1 速度快

由于 Apache Spark 支持内存计算,并且通过 DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比 Hadoop 的 MapReduce快 100 倍,在硬盘中要快 10 倍。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第5张图片

Spark处理数据与MapReduce处理数据相比,有如下两个不同点:

  • 其一、Spark处理数据时,可以将中间处理结果数据存储到内存中

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第6张图片

  • 其二、Spark调度以DAG方式,并且每个任务Task执行以线程(Thread)方式,并不是天MapReduce以进程(Process)方式执行。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第7张图片

2014 年的如此Benchmark 测试中,Spark 秒杀Hadoop,在使用十分之一计算资源的情况下,相同数据的排序上,Spark 比Map Reduce快3倍

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第8张图片

1.2.2 易于使用

Spark 的版本已经更新到 Spark 2.4.5,支持了包括 Java、Scala、Python 、R和SQL语言在内的多种语言。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第9张图片

1.2.3 通用性强

在 Spark 的基础上,Spark 还提供了包括 Spark SQL、Spark Streaming、MLib 及 GraphX 在内的多个工具库,我们可以在一个应用中无缝地使用这些工具库。其中,Spark SQL 提供了结构化的数据处理方式,Spark Streaming 主要针对流式处理任务(也是本书的重点),MLib 提供了很多有用的机器学习算法库,GraphX提供图形和图形并行化计算。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第10张图片

1.2.4 运行方式多样

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

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第11张图片

对于数据源而言,Spark 支持从HDFS、HBase、Cassandra 及 Kafka 等多种途径获取数据。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第12张图片

1.3 Spark 框架模块

整个 Spark 主要由 Spark Coke、 Spark SQL、 Spark Streaming、 Spark GraphX、 Spark MLlib组成,而后四项的能力都是建立在核心引擎之上 。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第13张图片

1.3.1 Spark Core

实现了 Spark 的基本功能,包含RDD、任务调度、内存管理、错误恢复、与存储系统交互等模块。数据结构:RDD

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第14张图片

1.3.2 Spark SQL

Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL操作数据。数据结构:Dataset/DataFrame = RDD + Schema

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第15张图片

官网:http://spark.apache.org/sql/

1.3.3 Spark Streaming

Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API。 数据结构:DStream = Seq[RDD]

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第16张图片

官网:http://spark.apache.org/streaming/

1.3.4 Spark MLlib

提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。 数据结构:RDD或者DataFrame

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第17张图片

官网:http://spark.apache.org/mllib/

1.3.5 Spark GraphX

Spark中用于图计算的API,性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。数据结构:RDD或者DataFrame

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第18张图片

官网:http://spark.apache.org/graphx/

在Full Stack 理想的指引下,Spark 中的Spark SQL 、SparkStreaming 、MLLib 、GraphX 几大子框架和库之间可以无缝地共享数据和操作,这不仅打造了Spark 在当今大数据计算领域其他计算框架都无可匹敌的优势,而且使得Spark 正在加速成为大数据处理中心首选通用计算平台。

1.4 Spark 运行模式

Spark 框架编写的应用程序可以运行在本地模式(Local Mode)、集群模式(Cluster Mode)和云服务(Cloud),方便开发测试和生产部署。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第19张图片

  • 第一、本地模式:Local Mode

将Spark 应用程序中任务Task运行在一个本地JVM Process进程中,通常开发测试使用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bOdNXX9D-1641908649911)(D:##myFile##learning\A-BIgData\mdfileImgPath\clip_image042.png)]

  • 第二、集群模式:Cluster Mode

将Spark应用程序运行在集群上,比如Hadoop YARN集群,Spark 自身集群Standalone及Apache Mesos集群,网址:http://spark.apache.org/docs/2.4.3/

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第20张图片

Hadoop YARN集群模式**(生产环境使用):**运行在 yarn 集群之上,由 yarn 负责资源管理,Spark 负责任务调度和计算,好处:计算资源按需伸缩,集群利用率高,共享底层存储,避免数据跨集群迁移。

Spark Standalone集群模式**(开发测试及生成环境使用)**:类似Hadoop YARN架构,典型的Mater/Slaves模式,使用Zookeeper搭建高可用,避免Master是有单点故障的。

Apache Mesos集群模式(国内使用较少):运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算。

  • 第三、云服务:Kubernetes 模式

中小公司未来会更多的使用云服务,Spark 2.3开始支持将Spark 开发应用运行到K8s上。

Spark框架概述、 Spark 框架模块详解、Spark 是什么、Spark 四大特点——速度快、易于使用、通用性强、运行方式多样_第21张图片

你可能感兴趣的:(大数据,Spark,spark,big,data)