文章目录

  • Spark简介
  • Spark特点
  • Spark架构
  • Spark实例进程
    • Driver驱动器
    • Executor执行器
  • Spark运行模式
    • Local模式
    • Standalone模式
    • Yarn模式
  • RDD分布式数据集
    • RDD简介
    • RDD拥有的属性
    • RDD特点
      • 1.分区
      • 2.只读
      • 3.依赖
      • 4.缓存
      • 5.CheckPoint
    • RDD编程模型

Spark简介

Spark是专为大规模数据处理而设计的计算引擎。Spark拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是,Spark计算过程中的中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的算法。Spark是对 Hadoop 的补充,它可以通过名为 Mesos 的第三方集群框架,在Hadoop系统中并行运行。Spark凭借自己优良的性能,逐渐的替代了MapReduce,成为Hadoop中主流的计算框架。

Spark特点

计算速度快:
与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过内存做存储来高效处理数据流。

高易用性:
Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的Shell,可以非常方便地在这些Shell中使用Spark集群来验证解决问题的方法。

高通用性:
Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。减少了开发和维护的人力成本和部署平台的物力成本。

高兼容性:
Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。

Spark架构

下图是Spark架构图,Spark计算框架可以分为三层,最底层是基础设施层,负责进行作业调度和集群控制。中间的Spark Core是Spark的核心,Spark的业务功能都是由Spark Core实现的。最上层是应用层,Spark可以用在多种场景下,Spark为不同的应用场景设计了不同的组件。


集群管理器:
Spark设计的目的之一是可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark支持在多种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个独立调度器。

Spark Core:
实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。

Spark SQL:
是Spark用来操作结构化数据的程序包。通过Spark SQL,用户可以使用SQL或者HQL来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。

Spark Streaming:
是Spark提供的对实时数据进行流式计算的组件。提供了用来操作数据流的API,并且与Spark Core中的 RDD API高度对应。

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

Spark实例进程

Spark会启动两类实例进程进行工作。分别是Driver(驱动器)进程和Executor(执行器)进程。

Driver驱动器

Spark的驱动器是执行用户程序中的main方法的进程。Driver驱动器负责执行创建SparkContext、创建RDD,以及进行RDD的转化和行动等操作。当启动Spark shell的时,会同时启动一个Spark Driver驱动器程序,在Spark shell中预加载的一个叫作 sc 的SparkContext对象。如果Spark Driver驱动器程序终止,那么Spark应用也就结束了。

Spark Driver驱动器主要负责的功能有:

  1. 把用户程序转为作业(JOB)
  2. 跟踪Executor的运行状况
  3. 为执行器节点调度任务
  4. UI展示应用运行状况

Executor执行器

Spark Executor是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 启动时,在Spark集群中的各节点上,Executor执行器会被同时启动,并且Executor会伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,Spark 会将出错节点上的任务调度到集群内的其他Executor节点上继续运行。

Spark Executor执行器主要负责的功能有:

  1. 负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程
  2. 通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算

Spark运行模式

Spark可以以三种不同的模式运行,分别为Local模式、Standalone模式和Yarn模式。由于Spark经常和Hadoop一起使用,所以三种模式中使用的最多的是Yarn模式,即Spark使用Yarn作为集群管理器。

Local模式

Local模式就是运行在一台计算机上,所有计算都运行在一个线程当中,不会进行并行计算,通常执行一些测试或者学习任务,很少使用。

Standalone模式

Master+Slave架构组成的Spark集群。Master使用Spark自己内置的简易集群管理器。

Yarn模式

这种模式下,Spark客户端直接连接Yarn集群,使用Yarn作为Spark集群的管理器。Yarn模式还可以细分为yarn-client和yarn-cluster两种模式,这两种模式的主要区别在于Driver程序运行的节点不同。yarn-client模式下,Driver程序直接运行在客户端,当使用者希望进行交互、调试、立即看到app的输出结果的情况下,可以使用这种模式。yarn-cluster模式下,Driver程序运行在由RM(ResourceManager)启动AP(APPMaster),yarn-cluster模式更适合用于生产环境,是使用最广泛地模式。

RDD分布式数据集

RDD简介

RDD全称是Resilient Distributed Dataset,分布式数据集,是Spark中最基本的数据抽象。RDD的代码是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。

RDD拥有的属性

  1. 一组分区(Partition),数据集的基本组成单位
  2. 一个计算每个分区的函数
  3. RDD之间的依赖关系
  4. 一个Partitioner,即RDD的分片函数
  5. 一个列表,存储存取每个Partition的优先位置(preferred location)

RDD特点

RDD是一个只读的分区的数据集,如果想对RDD进行改动,只能通过RDD的转换操作,由一个RDD转换得到一个新的RDD,新的RDD包含了从其他RDD继承来的信息。RDDs之间存在依赖,RDD的执行是按照血缘关系延时计算的。

1.分区

RDD逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个compute函数得到每个分区的数据。如果RDD是通过已有的文件系统构建,则compute函数是读取指定文件系统中的数据,如果RDD是通过其他RDD转换而来,则compute函数是执行转换逻辑将其他RDD的数据进行转换。

2.只读

RDD是只读的,要想改变RDD中的数据,只能在现有的RDD基础上创建新的RDD。由一个RDD转换到另一个RDD,可以通过丰富的操作算子实现,不再像MapReduce那样只能写map和reduce。

RDD的操作算子包括两类,一类叫做transformations,它是用来将RDD进行转化,构建RDD的血缘关系;另一类叫做actions,它是用来触发RDD的计算,得到RDD的相关计算结果或者将RDD保存的文件系统中。

3.依赖

RDDs通过操作算子进行转换,转换得到的新RDD包含了从其他RDDs继承来的信息,RDDs之间维护着这种血缘关系,也称之为依赖。依赖包括两种,一种是窄依赖,RDDs之间分区是一一对应的,另一种是宽依赖,下游RDD的每个分区与上游RDD(也称之为父RDD)的每个分区都有关,是多对多的关系。

4.缓存

如果在应用程序中多次使用同一个RDD,可以将该RDD缓存起来,该RDD只有在第一次计算的时候会根据血缘关系得到分区的数据,在后续其他地方用到该RDD的时候,会直接从缓存处取而不用再根据血缘关系计算,这样就加速了后期的重用。

如下图所示,RDD-1经过一系列的转换后得到RDD-n并保存到hdfs,RDD-1在这一过程中会有个中间结果,如果将其缓存到内存,那么在随后的RDD-1转换到RDD-m这一过程中,就不会计算其之前的RDD-0了。

5.CheckPoint

虽然RDD的血缘关系天然地可以实现容错,当RDD的某个分区数据失败或丢失,可以通过血缘关系重建。但是对于长时间迭代型应用来说,随着迭代的进行,RDDs之间的血缘关系会越来越长,一旦在后续迭代过程中出错,则需要通过非常长的血缘关系去重建,势必影响性能。为此,RDD支持checkpoint将数据保存到持久化的存储中,这样就可以切断之前的血缘关系,因为checkpoint后的RDD不需要知道它的父RDDs了,它可以从checkpoint处拿到数据。

RDD编程模型

在Spark中,RDD被表示为对象,通过对象上的方法调用来对RDD进行转换。经过一系列的transformations定义RDD之后,就可以调用actions触发RDD的计算,action可以是向应用程序返回结果(count, collect等),或者是向存储系统保存数据(saveAsTextFile等)。在Spark中,只有遇到action,才会执行RDD的计算(即延迟计算),这样在运行时可以通过管道的方式传输多个转换。

Spark开发者需要首先编写一个Driver程序,它被提交到集群以调度运行Worker。Driver中定义了一个或多个RDD,Driver提交后,集群调用RDD上的action,然后Worker负责执行RDD分区计算任务。

Spark大数据计算框架知识总结相关推荐

  1. 大数据计算框架与平台--深入浅出分析

    http://mp.weixin.qq.com/s/s2DnbgieeQockaLKdZDCzA?utm_source=tuicool&utm_medium=referral 1. 前言 计算 ...

  2. 超级干货 :一文读懂大数据计算框架与平台(升级版)

    1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为 ...

  3. 一文读懂大数据计算框架与平台

    1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为 ...

  4. Flink大数据计算框架

    大数据计算框架--Flink 什么是Flink 为什么选择Flink(优点.特性) 同时支持高吞吐.低延迟.高性能 支持事件时间(Event Time)概念 支持有状态计算 支持高度灵活的窗口(win ...

  5. 大数据计算框架及引擎介绍

    一.大数据处理框架 主流的大数据处理框架包括以下三类五种: 1.仅批处理框架:Apache Hadoop 2.仅流处理框架:Apache Storm.Apache Samza 3.混合框架:Apach ...

  6. 新代大数据计算框架Apache Flink

    大数据计算框架的发展 最近几年,出现了很多热门的开源社区,其中注明的Hadoop Storm,以及很热门的Spark, 它们有着各自专注的应用场景.Spar掀开了内存计算的先河,也以内为基础,赢得了内 ...

  7. 大数据计算框架期末复习

    1.  下面哪个不是Linux发行版本  (D) A. Ubuntu B. Centos C. RedHat Enterprise Linux     D. Mac 6.web方式查看hdfs目录结构 ...

  8. spark大数据计算引擎原理深剖(优缺点)-spark简介

    用spark,你仅仅只是调用spark的API肯定是很low的. 今天来讲讲spark的原理,并且会针对部分源码进行讲解,如有不同意见请联系本人交流探讨. 目前大数据生态主要部分是Hadoop软件框架 ...

  9. 大数据计算框架-FLINK精华篇1

    前言: 为什么大家会慢慢青睐上Flink呢?哪些场景会使用它呢?究其原因是因为,信息爆炸时代的来临,我们对数据的及时性和容错性要求越来越高.如双11的电商大屏,我们当然想实时看到销售的滚动数据.我们使 ...

  10. 大数据计算的四支精干队伍,你造吗

    本文首发在我简书的账号上,原文地址:http://www.jianshu.com/p/7a875e09d4e1 <易经·系辞>有云:"形而上者谓之道,形而下者谓之器". ...

最新文章

  1. Mac MySQL配置环境变量的两种方法
  2. NOIP2008传纸条[DP]
  3. 如何用12864液晶显示图片和绘制任意函数图象(打点)
  4. 显示浏览器窗口的高度和宽度
  5. SAP HR信息类型
  6. 用android LinearLayout和RelativeLayout实现精确布局(转)
  7. KAFKA介绍(分布式架构)
  8. java 线程什么时候出栈_在Java中给出的时间
  9. JavaFX 8的弹出式编辑器
  10. python进阶07 MySQL
  11. 2022年引领全球增长的60大技术:机会、增长、投资、洞察
  12. 刻不容缓!联合国加开会议讨论「如何限制杀人机器人」
  13. SmartSvn遗漏.a文件的解决办法
  14. 关于深度森林的一点理解
  15. masscan端口扫描
  16. OSChina 周六乱弹 ——你打算怎么和老妈解释
  17. 欢迎清风艾艾在ITPUB博客安家!
  18. OFDM专题之如何计算OFDM一个符号的功率,功率谱密度
  19. K-means聚类算法原理及python实现
  20. Unity 学习 Tilemap

热门文章

  1. python psutil模块怎么在线下载_python之psutil模块
  2. python适用于什么系统_Python适合在什么系统
  3. 08. Django基础:模板层
  4. Java进阶:微服务SpringCloud
  5. React:AntDesign引入简介
  6. jQuery:点击某元素后根据兄弟节点是否显示,控制兄弟节点的显示与否
  7. Node.js:Node核心模块
  8. dedecms 问答系统 ask
  9. 认真,respect!
  10. 静态include与动态include的区别