大数据技术原理与应用-完整版.ppt

  1. 1、本文档共769页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大数据技术原理与应用-完整版

16.3.2 架构设计 图16-6 Spark中各种概念之间的相互关系 16.3.3 Spark运行基本流程 (1)首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控 (2)资源管理器为Executor分配资源,并启动Executor进程 (3)SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行,并提供应用程序代码 (4)Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源 16.3.3 Spark运行基本流程 图16-7 Spark运行基本流程图 16.3.3 Spark运行基本流程 总体而言,Spark运行架构具有以下特点: (1)每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task (2)Spark运行过程与资源管理器无关,只要能够获取Executor进程并保持通信即可 (3)Task采用了数据本地性和推测执行等优化机制 16.3.4 RDD运行原理 1.设计背景 2.RDD概念 3.RDD特性 4.RDD之间的依赖关系 5.Stage的划分 6.RDD运行过程 16.3.4 RDD运行原理 1.设计背景 许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,共同之处是,不同计算阶段之间会重用中间结果 目前的MapReduce框架都是把中间结果写入到HDFS中,带来了大量的数据复制、磁盘IO和序列化开销 RDD就是为了满足这种需求而出现的,它提供了一个抽象的数据架构,我们不必担心底层数据的分布式特性,只需将具体的应用逻辑表达为一系列转换处理,不同RDD之间的转换操作形成依赖关系,可以实现管道化,避免中间数据存储 16.3.4 RDD运行原理 2.RDD概念 一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算 RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集创建RDD,或者通过在其他RDD上执行确定的转换操作(如map、join和group by)而创建得到新的RDD 16.3.4 RDD运行原理 RDD提供了一组丰富的操作以支持常见的数据运算,分为“动作”(Action)和“转换”(Transformation)两种类型 RDD提供的转换接口都非常简单,都是类似map、filter、groupBy、join等粗粒度的数据转换操作,而不是针对某个数据项的细粒度修改(不适合网页爬虫) 表面上RDD的功能很受限、不够强大,实际上RDD已经被实践证明可以高效地表达许多框架的编程模型(比如MapReduce、SQL、Pregel) Spark用Scala语言实现了RDD的API,程序员可以通过调用API实现对RDD的各种操作 16.3.4 RDD运行原理 RDD典型的执行过程如下: RDD读入外部数据源进行创建 RDD经过一系列的转换(Transformation)操作,每一次都会产生不同的RDD,供给下一个转换操作使用 最后一个RDD经过“动作”操作进行转换,并输出到外部数据源 这一系列处理称为一个Lineage(血缘关系),即DAG拓扑排序的结果 优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次操作变得简单 16.3.4 RDD运行原理 图16-8 RDD执行过程的一个实例 动作 转换 转换 转换 转换 转换 创建 创建 16.3.4 RDD运行原理 Spark采用RDD以后能够实现高效计算的原因主要在于: (1)高效的容错性 现有容错机制:数据复制或者记录日志 RDD:血缘关系、重新计算丢失分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作 (2)中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销 (3)存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化 3.RDD特性 16.3.4 RDD运行原理 窄依赖表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个

文档评论(0)

xuchangbin + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档