- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapter16-厦门大学-林子雨-大数据技术原理与应用-第十六章-Spark(2016年4月20日版本)
16.3.4 RDD运行原理 Spark采用RDD以后能够实现高效计算的原因主要在于: (1)高效的容错性 现有容错机制:数据复制或者记录日志 RDD:血缘关系、重新计算丢失分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作 (2)中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销 (3)存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化 3.RDD特性 16.3.4 RDD运行原理 窄依赖表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区 宽依赖则表现为存在一个父RDD的一个分区对应一个子RDD的多个分区 图16-9 窄依赖与宽依赖的区别 4. RDD之间的依赖关系 16.3.4 RDD运行原理 Spark通过分析各个RDD的依赖关系生成了DAG,再通过分析各个RDD中的分区之间的依赖关系来决定如何划分Stage,具体划分方法是: 在DAG中进行反向解析,遇到宽依赖就断开 遇到窄依赖就把当前的RDD加入到Stage中 将窄依赖尽量划分在同一个Stage中,可以实现流水线计算 5.Stage的划分 16.3.4 RDD运行原理 图16-10根据RDD分区的依赖关系划分Stage 5.Stage的划分 被分成三个Stage,在Stage2中,从map到union都是窄依赖,这两步操作可以形成一个流水线操作 流水线操作实例 分区7通过map操作生成的分区9,可以不用等待分区8到分区10这个map操作的计算结束,而是继续进行union操作,得到分区13,这样流水线执行大大提高了计算的效率 16.3.4 RDD运行原理 Stage的类型包括两种:ShuffleMapStage和ResultStage,具体如下: (1)ShuffleMapStage:不是最终的Stage,在它之后还有其他Stage,所以,它的输出一定需要经过Shuffle过程,并作为后续Stage的输入;这种Stage是以Shuffle为输出边界,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出,其输出可以是另一个Stage的开始;在一个Job里可能有该类型的Stage,也可能没有该类型Stage; (2)ResultStage:最终的Stage,没有输出,而是直接产生结果或存储。这种Stage是直接输出结果,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出。在一个Job里必定有该类型Stage。 因此,一个Job含有一个或多个Stage,其中至少含有一个ResultStage。 5.Stage的划分 16.3.4 RDD运行原理 通过上述对RDD概念、依赖关系和Stage划分的介绍,结合之前介绍的Spark运行基本流程,再总结一下RDD在Spark架构中的运行过程: (1)创建RDD对象; (2)SparkContext负责计算RDD之间的依赖关系,构建DAG; (3)DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行。 图16-11 RDD在Spark中的运行过程 16.4 Spark SQL 16.4.1 从Shark说起 16.4.2 Spark SQL设计 16.4.1 从Shark说起 Shark即Hive on Spark,为了实现与Hive兼容,Shark在HiveQL方面重用了Hive中HiveQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似认为仅将物理执行计划从MapReduce作业替换成了Spark作业,通过Hive的HiveQL解析,把HiveQL翻译成Spark上的RDD操作。 Shark的设计导致了两个问题: 一是执行计划优化完全依赖于Hive,不方便添加新的优化策略; 二是因为Spark是线程级并行,而MapReduce是进程级并行,因此,Spark在兼容Hive的实现上存在线程安全问题,导致Shark不得不使用另外一套独立维护的打了补丁的Hive源码分支 Hive中SQL查询的MapReduce作业转化过程 16.4.2 Spark SQL设计 Spark SQL在Hive兼容层面仅依赖HiveQL解析、Hive元数据,也就是说,从HQL被解析成抽象语法树(AST)起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责 图16-12 Spark SQL架构 16.4.2 Spark SQL设计 图16-13 Spark SQL支持的
您可能关注的文档
- 2016年护理文书书写.ppt
- 2016年新人教版五年级下册数学第八单元《找次品》.ppt
- 2016年预防校园暴力-构建和谐校园主题专题讲座(黄艳).ppt
- 3D巧克力打印机.ppt
- 2016年职业健康培训教材课件.ppt
- 2016届数学高考备考二轮2幻灯片.ppt
- 3DS-MAX建模.ppt
- 2016年承包商管理规定培训.ppt
- 2016年高中地理 区域地理 第2单元 世界地理 第5讲 东亚-日本 中亚.ppt
- 2016年高考复习专题:修改病句幻灯片.ppt
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)