Spark架构与运行流程

1、为什么要引入Yarn和Spark。

(1)现有的hadoop生态系统中存在的问题

1)使用mapreduce进行批量离线分析;2)使用hive进行历史数据的分析;3)使用hbase进行实时数据的查询;4)使用storm进行实时的流处理;(2)选用spark的原因1) 应用于流式计算的Spark Streaming;2) 应用于即席查询(Ad-hoc)的Spark SQL;3) 应用于机器学习(数据挖掘)的MLlib;4)应用于图处理的GraphX;5)将R扩展成并行计算的SparkR;6)还有权衡精度和速度的查询引擎BlinkDB;7)基于内存计算(从表象来看);8)DAG(从深层次来看):把执行过程做成一张图,再来优化;9)开发速度快;(3)Spark和MapReduce对比1)调度:启动map和reduce任务需要时间;2)数据共享:从HDFS上读取数据执行,每次迭代均要重写将结果写回到HDFS上,后续的迭代如果需要前面运行的结果数据时需要再去HDFS上读取,以此类推;3)输出结果数据多副本:数据需要额外的复制、序列化、磁盘/IO的开销; Spark和MapReduce的区别:迭代时数据写入内存,而不是HDFS上,进而减少大量的磁盘IO开销; 2. Spark已打造出结构一体化、功能多样化的大数据生态系统,请简述Spark生态系统。Spark生态系统:

Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算;

Spark不仅支持Scala编写应用程序,而且支持Java和Python等语言进行编写,特别是Scala是一种高效、可拓展的语言,能够用简洁的代码处理较为复杂的处理工作。

Spark生态圈即BDAS===》

Spark具有很强的适应性,能够读取HDFS、Cassandra、HBase、S3和Techyon为持久层读写原生数据,能够以Mesos、YARN和自身携带的Standalone作为资源管理器调度job,来完成Spark应用程序的计算。

spark跟hadoop的比较:

Spark是在借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷,具体如下:

首先,Spark把中间数据放到内存中,迭代运算效率高。MapReduce中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而Spark支持DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。

其次,Spark容错性高。Spark引进了弹性分布式数据集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”(即充许基于数据衍生过程)对它们进行重建。另外在RDD计算时可以通过CheckPoint来实现容错,而CheckPoint有两种方式:CheckPoint Data,和Logging The Updates,用户可以控制采用哪种方式来实现容错。

最后,Spark更加通用。不像Hadoop只提供了Map和Reduce两种操作,Spark提供的数据集操作类型有很多种,大致分为:Transformations和Actions两大类。Transformations包括Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort和PartionBy等多种操作类型,同时还提供Count, Actions包括Collect、Reduce、Lookup和Save等操作。另外各个处理节点之间的通信模型不再像Hadoop只有Shuffle一种模式,用户可以命名、物化,控制中间结果的存储、分区等。

Spark支持多种分布式存储系统:HDFS和S3。

3. 用图文描述你所理解的Spark运行架构,运行流程。

(1)Spark运行架构:

基本概念:

  Application:用户编写的Spark应用程序。
  Driver:Spark中的Driver即运行上述Application的main函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与  ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。

  Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task。
  RDD:弹性分布式数据集,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
  DAG:有向无环图,反映RDD之间的依赖关系。
  Task:运行在Executor上的工作单元。
  Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。
  Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表一组关联的,相互之间没有Shuffle依赖关系的任务组成的任务集。
  Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型
  1) Standalon : spark原生的资源管理,由Master负责资源的分配
  2) Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架
  3) Hadoop Yarn: 主要是指Yarn中的ResourceManager
一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成。

当执行一个Application时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行结果会返回给Driver,或者写到HDFS或者其它数据库中。

与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:

  • 利用多线程来执行具体的任务减少任务的启动开销;

  • Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销;

(2)Spark运行流程:

  • 为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控

  • 资源管理器为Executor分配资源,并启动Executor进程

  • SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理。

  • Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码。

  • Task在Executor上运行把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

(3)Spark运行架构特点:

每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task。
Spark运行过程与资源管理器无关,只要能够获取Executor进程并保存通信即可。
Task采用数据本地性和推测执行等优化机制。

(0)

相关推荐

  • 大数据入门与实战-PySpark的使用教程

    大数据入门与实战-PySpark的使用教程

  • 搭建Spark计算平台 python操作Spark

    一.Spark安装及服务启动 Apache Spark是一种快速的集群计算技术,专为快速计算而设计.它基于Hadoop MapReduce,它扩展了MapReduce模型,以有效地将其用于更多类型的计 ...

  • 全面解析Spark,以及和Python的对接

    作者:@古明地盆 喜欢这篇文章的话,就点个关注吧,或者去bilibili看看我也行,虽然啥也没有.:https://space.bilibili.com/12921175 楔子 这次我们来聊一聊 Sp ...

  • pyspark入门教程

    目录 一.windows下配置pyspark环境 1.1 jdk下载安装 1.2 Scala下载安装 1.3 spark下载安装 1.4 Hadoop下载安装 1.5 pyspark下载安装 1.6 ...

  • 大数据基础:Spark工作原理及基础概念

    一.Spark 介绍及生态Spark是UC Berkeley AMP Lab开源的通用分布式并行计算框架,目前已成为Apache软件基金会的顶级开源项目.至于为什么我们要学习Spark,可以总结为下面 ...

  • 推荐系统架构与算法流程详解

    推荐算法的理解 如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本.如果把推荐系统简单拆开来看,推荐系统主要 ...

  • ISP(图像信号处理)算法概述、工作原理、架构、处理流程

    目          录 ISP的主要内部构成:ISP内部包含 CPU.SUP IP(各种功能模块的通称).IF 等设备 ISP的控制结构:1.ISP逻辑    2.运行在其上的firmware IS ...

  • MySQL基础架构和执行流程分析

    MySQL执行一条插入语句或者查询语句,实际上会经过哪些流程和部件,MySQL的架构是怎么样的,本文就一起从一条查询语句的执行流程开始来揭开面纱. 如以下的执行语句: select * from te ...

  • PDCA,管理体系的运行流程和管理内容的关系,先初步探讨下

    PDCA,管理体系的运行流程和管理内容的关系,初步探讨 一个组织的质量管理,是一个很大的综合性管理过程,它由一系列的具体管理过程所组成.要管理这个庞大的综合系统,需要建设一个庞大的质量管理体系(管理方 ...

  • 拟上市公司的股权架构搭建全流程(收藏)

    投行法库 我是一个智库,汇聚投行所需商业法律财会知识,教你像投资大咖那样思考问题 3篇原创内容 公众号 在企业上市的过程中,关联交易.同业竞争.主体资格.税收等问题是证监会发审委关注的重点问题.而这些 ...

  • 视频聊天室源码的功能架构和工作流程

    一. 视频聊天室源码功能要点 1. 多人语音/视频:主持人领导下,所有人轮流上麦,通过音视频,各抒己见 2. 美颜:支持上麦美颜.贴纸.滤镜等效果 3. 礼物:赠送多种礼物的功能,包括连发和按组发等 ...

  • 板式换热器组装流程及其运行原理

    板式换热器组装流程及其运行原理

  • 品牌策划流程架构

    一.识别体系 1.品牌状况:品牌渗透率排名,品牌知名度.美誉度. 忠诚度的现状等 2.竞争态势:竞品的定位.品牌策略及发展趋势 3.消费需求:消费者对品牌的需求 4.本品位置:本品在同类产品中的品牌排 ...

  • 华为流程信息化实践与架构规划分享(附下载)

    资料下载方式: 3.到选型宝订阅号发送 截图 并回复文字 " 华为信息化 " 即可获得资料下载链接 资料下载方式: