每天一点Spark

本文介绍了Spark的发展历程,作为一种快速、通用的大数据分析引擎,它具有易用性、通用性等特点,包括SparkSQL、SparkStreaming等子项目。文章还详细讲解了Spark的运行结构、原理以及核心数据集PDD的概念和特性,涵盖了Spark的生态体系和作业运行流程。
摘要由CSDN通过智能技术生成

一。认识Spark

1.Spark的发展历史

Spark从诞生到正式版本的发布,经历的时间较短。2017年以后Spark的发展主要针对Spark的可能性,稳定性进行改进,并持续润色代码。随着Spark的逐渐成熟,并在社区的推动下,Spark所提供的强大功能受到了越来越多技术团队和企业的青睐。Spark于2020年发布了3.0.0版本。

2.什么是Spark

spark网址: http://spark.apachecn.org/docs/cn/2.2.0/index.html
Spark是一种快速、通用、可扩展的大数据分析引擎,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。

3.Spark的特点

Spark作为新一代轻量级大数据处理平台,具有快速,易用,通用,随处运行,代码简洁等特点。

快速

一般情况下,对于迭代次数较多的应用程序,Spark程序在内存中的运行速度是Hadoop MapReduce运行速度的100多倍,在磁盘上的运行速度是Hadoop MapReduce运行速度的10多倍

MapReduce是基于磁盘运行的而Spark是基于内存

                                       

易用

Spark支持使用ScalaPythonJavaR语言快速编写应用。同时Spark提供超过80高阶算子,使得编写并行应用程序变得容易并且可以在ScalaPythonR的交互模式下使用Spark

                     

通用

Spark可以与SQLStreaming及复杂的分析良好结合。Spark还有一系列的高级工具,包括Spark SQLMLlib(机器学习库)、GraphX(图计算)和Spark Streaming(流计算),并且支持在一个应用中同时使用这些组件

    

随处运行

用户可以使用Spark的独立集群模式运行Spark,也可以在EC2(亚马逊弹性计算云)、Hadoop YARN或者Apache Mesos上运行Spark。并且可以从HDFSCassandraHBaseHiveTachyon和任何分布式文件系统读取数据

                                          

代码简洁

      

4.什么是结构化数据什么是非结构化数据
结构化数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。简单来说就是数据库。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。所以,结构化数据的存储和排列是很有规律的
非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片、各类报表、图像和音频/视频等。非结构化数据其格式非常多样,标准也是多样性的。

两者的概念并不难区分,如果用一份Excel报表来理解,这份文件本身是非结构化数据,而里面内容则是结构化数据

5认识Spark的生态圈

Spark Core

Spark的核心,提供底层框架及核心支持。

BlinkDB

一个用于在海量数据上进行交互式SQL查询的大规模并行查询引擎,允许用户通过权衡数据精度缩短查询响应时间,数据的精度将被控制在允许的误差范围内。

Spark SQL

可以执行SQL查询,支持基本的SQL语法和HiveQL语法,可读取的数据源包括HiveHDFS、关系数据库(如MySQL)等。

Spark Streaming

可以进行实时数据流式计算

MLBace

Spark生态圈的一部分,专注于机器学习领域,学习门槛较低。MLBace由四部分组成:MLlib,MLI,ML Optimizer和MLRuntime。

二.了解Spark运行结构与原理

1.了解Spark架构

客户端

用户提交作业的客户端

Driver

运行Applicationmain()函数并创建SparkContext

SparkContext

整个应用的上下文,控制应用的生命周期

Cluster Manager

资源管理器,即在集群上获取资源的外部服务,目前主要有StandaloneSpark原生的资源管理器)和YARNHadoop集群的资源管理器)。

SparkWorker

集群中任何可以运行应用程序的节点,运行一个或多个Executor进程

Executor

执行器,在Spark Worker上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executor

Task

被发送到某个Executor的具体任务

2.了解Spark作业运行流程

Standalone模式

         

standalone模式是单节点模式也就是说是一种独立的模式或者本地模式

yarn模式

由图可看出启动Application Master的客户端可以立即关闭,不必持续到Application的执行周期结束。

在yarn集群模式下,Spark Driver运行在Application Master中,Application Master负责向yarn申请资源,并监督作业的运行状况。用户提交了作业后,即可关闭客户端,作业将继续在了yarn上运行,因此yarn集群模式不适合运行交互性强的作业,更适用于实际的生产环境。在yarn客户端模式下,Application Master只负责向yarn申请资源并将其交给Executor,客户端会直接与Container通信进行作业的调度,因此,yarn客户端模式适用于交互和调试,可以快速的看到应用程序的输出信息。

3.了解Spark核心数据集PDD

PDD的特性

高效的容错性

现有容错机制:数据复制或者记录日志RDD具有天生的容错性:血缘关系,重新计算丢失分区,无需回滚系统,重算过程在不同节点之间并行,只记录粗粒度的操作

中间结果持久化到内存,数据在内存中的多个RDD操作直接按进行传递,避免了不必要的读写磁盘开销

存放的数据可以是JAVA对象,避免了不必要的对象序列化和反序列化

转换算子和行动算子

Spark RDD转换和操作示例

宽依赖与窄依赖

父RDD的一个分区只被一个子RDD的一个分区所使用就是窄依赖,否则就是宽依赖

                                      

PDD Stage的划分

                           

stage:

(1)一个Job可划分为多个Stage,Stage代表Job执行的阶段
(2)有关联的Stage之间是串行执行的,也就是上一个阶段执行完毕才能执行下一个Stage
(3)Stage的划分根据是否有Shuffle(RDD宽依赖,也叫Shuffle依赖)划分的,一个Job的Stage数等于Shuffle数+1

Task:

一个Stage可以划分多个Task,一个Stage的Task的总数等于这个Stage中最后一个RDD的分区数量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值