编辑: jingluoshutong | 2019-07-03 |
110 0.9
0 20
40 60
80 100
120 Hadoop Spark 执行时间 (s) 图16-3 Hadoop与Spark执行逻辑回归的时间对比 ?使用Hadoop进行迭代计算非常耗资源 ?Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间 结果作运算,避免了从磁盘中频繁读取数据 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.1.3 Spark与Hadoop的对比 MapReduce Spark 数据存储结构:磁盘HDFS文件 系统的split 使用内存构建弹性分布式数据集 RDD 对数据进行运算和cache 编程范式:Map + Reduce DAG: Transformation + Action 计算中间结果落到磁盘,IO及序 列化、反序列化代价大 计算中间结果在内存中维护 存取速度比磁盘高几个数量级 Task以进程的方式维护,需要数 秒时间才能启动任务 Task以线程的方式维护 对于小数据集读取能够达到亚秒 级的延迟 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.2 Spark生态系统 在实际应用中,大数据处理主要包括以下三个类型: ?复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间 ?基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间 ?基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间 当同时存在以上三种场景时,就需要同时部署三种不同的软件 ?比如: MapReduce / Impala / Storm 这样做难免会带来一些问题: ?不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格 式的转换 ?不同的软件需要不同的开发和维护团队,带来了较高的使用成本 ?比较难以对同一个集群中的各个系统进行统一的资源协调和分配 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.2 Spark生态系统 ?Spark的设计遵循 一个软件栈满足不同应用场景 的理念,逐渐 形成了一套完整的生态系统 ?既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计 算、机器学习和图计算等 ?Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决 方案 ?因此,Spark所提供的生态系统足以应对上述三种场景,即同时支 持批处理、交互式查询和流数据处理 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.2 Spark生态系统 Spark的生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、 MLLib和GraphX 等组件 图16-4 BDAS架构 Spark生态系统已经成为伯克利数据分析软件栈BDAS(Berkeley Data Analytics Stack)的重要组成部分 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.2 Spark生态系统 应用场景 时间跨度 其他框架 Spark生态系统中的组件 复杂的批量数据处 理 小时级 MapReduce、Hive Spark 基于历史数据的交 互式查询 分钟级、秒级Impala、Dremel、 Drill Spark SQL 基于实时数据流的 数据处理 毫秒、秒级 Storm、S4 Spark Streaming 基于历史数据的数 据挖掘 - Mahout MLlib 图结构数据的处理 - Pregel、Hama GraphX 表1 Spark生态系统组件的应用场景 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.3 Spark运行架构 3.3.1 基本概念 3.3.2 架构设计 3.3.3 Spark运行基本流程 3.3.4 Spark运行原理 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.3.1 基本概念 ?RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布 式内存的一个抽象概念,提供了一种高度受限的共享内存模型 ?DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依 赖关系 ?Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task ?Application:用户编写的Spark应用程序 ?Task:运行在Executor上的工作单元 ?Job:一个Job包含多个RDD及作用于相应RDD上的各种操作 ?Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为 Stage,或者也被称为TaskSet,代表了一组关联的、相互之间没有Shuffle依 赖关系的任务组成的任务集 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.3.2 架构设计 图16-5 Spark运行架构 ?Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的 工作节点(Worker Node)、每个应用的任务控制节点(Driver)和每个工 作节点上负责具体任务的执行进程(Executor) ?资源管理器可以自带或Mesos或YARN 与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点: ?一是利用多线程来执行具体的任务,减少任务的启动开销 ?二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存 储设备,有效减少IO开销 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.3.2 架构设计 图16-6 Spark中各种概念之间的相互关系 ?一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成, 一个Stage由多个没有Shuffle关系的Task组成 ?当执行一个Application时,Driver会向集群管理器申请资源,启动Executor, 并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运 行结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中 《大数据处理技术Spark》 厦门大学计算机科学系 林子雨 [email protected] 3.3.3 Spark运行基本流程 图16-7 Spark运行基本流程图 (1)首先为应用构建起基本的 运行环境,即由Driver创建一个 SparkContext,进行资源的申请 、任务的分配和监控 (2)资源管理器为Executor分 配资源,并启动Executor进程 (3)SparkContext根据RDD的 依赖关系构建DAG图,DAG图 提交给DAGScheduler解析成 Stage,然后把一个个TaskSet提 交给底层调度器TaskScheduler 处理;