大数据 Spark编程基础(Scala版)-第3章-Spark的设计与运行原理.pptVIP

大数据 Spark编程基础(Scala版)-第3章-Spark的设计与运行原理.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.3.4 RDD运行原理 4. RDD之间的依赖关系——Shuffle操作 Spark经常被认为是基于内存的计算框架,为什么Shuffle过程也会产生磁盘IO开销呢? 图 Spark中的Shuffle过程 3.3.4 RDD运行原理 4. RDD之间的依赖关系——Shuffle操作 Spark经常被认为是基于内存的计算框架,为什么Shuffle过程也会产生磁盘IO开销呢? 图 Spark Shuffle把多个桶写入到一个文件 3.3.4 RDD运行原理 窄依赖表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区 宽依赖则表现为存在一个父RDD的一个分区对应一个子RDD的多个分区 图 窄依赖与宽依赖的区别 4. RDD之间的依赖关系——窄依赖和宽依赖 3.3.4 RDD运行原理 Spark根据DAG图中的RDD依赖关系,把一个作业分成多个阶段。对于宽依赖和窄依赖而言,窄依赖对于作业的优化很有利。只有窄依赖可以实现流水线优化,宽依赖包含Shuffle过程,无法实现流水线方式处理。 Spark通过分析各个RDD的依赖关系生成了DAG,再通过分析各个RDD中的分区之间的依赖关系来决定如何划分Stage,具体划分方法是: 在DAG中进行反向解析,遇到宽依赖就断开 遇到窄依赖就把当前的RDD加入到Stage中 将窄依赖尽量划分在同一个Stage中,可以实现流水线计算 5.阶段的划分 3.3.4 RDD运行原理 图 根据RDD分区的依赖关系划分Stage 5.Stage的划分 被分成三个Stage,在Stage2中,从map到union都是窄依赖,这两步操作可以形成一个流水线操作 流水线操作实例 分区7通过map操作生成的分区9,可以不用等待分区8到分区10这个map操作的计算结束,而是继续进行union操作,得到分区13,这样流水线执行大大提高了计算的效率 3.3.4 RDD运行原理 通过上述对RDD概念、依赖关系和Stage划分的介绍,结合之前介绍的Spark运行基本流程,再总结一下RDD在Spark架构中的运行过程: (1)创建RDD对象; (2)SparkContext负责计算RDD之间的依赖关系,构建DAG; (3)DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行。 图 RDD在Spark中的运行过程 6.RDD运行过程 3.4 Spark的部署方式 Spark支持三种不同类型的部署方式,包括: Standalone(类似于MapReduce1.0,slot为资源分配单位) Spark on Mesos(和Spark有血缘关系,更好支持Mesos) Spark on YARN 图 Spark on Yarn架构 讨论:Spark和Hadoop 虽然Spark很快,但现在在生产环境中仍然不尽人意,无论扩展性、稳定性、管理性等方面都需要进一步增强 同时,Spark在流处理领域能力有限,如果要实现亚秒级或大容量的数据获取或处理需要其他流处理产品。Cloudera宣布旨在让Spark流数据技术适用于80%的使用场合,就考虑到了这一缺陷。我们确实看到实时分析(而非简单数据过滤或分发)场景中,很多以前使用S4或Storm等流式处理引擎的实现已经逐渐被Kafka+Spark Streaming代替 Spark的流行将逐渐让MapReduce、Tez走进博物馆 Hadoop现在分三块HDFS/MR/YARN,Spark比Hadoop性能好,只是Spark作为一个计算引擎,比MR的性能要好。但它的存储和调度框架还是依赖于HDFS/YARN,Spark也有自己的调度框架,但仍然非常不成熟,基本不可商用 * 一般来说,分布式数据集的容错性有两种方式:即数据检查点和记录数据的更新。由于面向的是大规模数据分析,数据检查点操作成本很高:需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源(在内存中复制数据可以减少需要缓存的数据量,而存储到磁盘则会拖慢应用程序)。所以选择记录更新的方式。但是,如果更新太多,那么记录更新成本也不低。因此,RDD只支持读操作,并且只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列转换记录下来(即Lineage),以便恢复丢失的分区。 虽然只支持粗粒度转换限制了编程模型,但是RDD仍然可以很好地适用于很多应用,特别是支持数据并行的批量分析应用,包括数据挖掘、机器学习、图算法等,因为这些程序通常都会在很多记录上执行相同的操作。 * 第3章 Spark的设计与运行原

文档评论(0)

笑笑 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档