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

六 RDD依赖 依赖关系分类的特性: 窄依赖:子RDD中的每个数据块只依赖于父RDD中对应的有限个固定的数据块;每个父RDD的分区都至多被一个子RDD的分区使用,例如,map操作是一种窄依赖; 宽依赖:子RDD中的一个数据块可以依赖于父RDD中的所有数据块。例如:map变换,子RDD中的数据块只依赖于父RDD中对应的一个数据块;groupByKey变换,子RDD中的数据块会依赖于多有父RDD中的数据块,因为一个key可能错在于父RDD的任何一个数据块中;多个子RDD的分区依赖一个父RDD的分区。例如,而join操作是一种宽依赖(除非父RDD已经基于Hash策略被划分过了) 六 RDD依赖 依赖关系分类的特性: 第一,窄依赖可以在某个计算节点上直接通过计算父RDD的某块数据计算得到子RDD对应的某块数据; 宽依赖则要等到父RDD所有数据都计算完成之后,并且父RDD的计算结果进行hash并传到对应节点上之后才能计算子RDD。 第二,数据丢失时,对于窄依赖只需要重新计算丢失的那一块数据来恢复; 对于宽依赖则要将祖先RDD中的所有数据块全部重新计算来恢复。 所以在长“血统”链特别是有宽依赖的时候,需要在适当的时机设置数据检查点。也是这两个特性要求对于不同依赖关系要采取不同的任务调度机制和容错恢复机制。 六 Spark的lineage RDD的容错机制实现分布式数据集容错方法有两种: 数据检查点和记录更新 RDD采用记录更新的方式:记录所有更新点的成本很高。所以,RDD只支持粗颗粒变换,即只记录单个块上执行的单个操作,然后创建某个RDD的变换序列(血统)存储下来; 变换序列指,每个RDD都包含了他是如何由其他RDD变换过来的以及如何重建某一块数据的信息。因此RDD的容错机制又称“血统”容错。 要实现这种“血统”容错机制,最大的难题就是如何表达父RDD和子RDD之间的依赖关系。窄依赖和宽依赖,通过依赖关系串,表现记录更新,lineage称为血统、世族 六 Spark检查点 虽然lineage可用于错误后RDD的恢复,但对于很长的lineage的RDD来说,这样的恢复耗时较长。由此,将某些RDD进行检查点操作(Checkpoint)保存到稳定存储上,是有帮助的。 通常情况下,对于包含宽依赖的长血统的RDD设置检查点操作是非常有用的,比如当集群中某个节点的故障会使得从各个父RDD得出某些数据丢失,这时就需要完全重算。相反,对于那些窄依赖于稳定存储上数据的RDD来说,对其进行检查点操作就不是有必要的。 如果一个节点发生故障,RDD在该节点中丢失的分区数据可以通过并行的方式从其他节点中重新计算出来,计算成本只是复制整个RDD的很小一部分。 六 Spark检查点 Spark当前提供了为RDD设置检查点(用一个REPLICATE标志来持久化)操作的API,让用户自行决定需要为哪些数据设置检查点操作。但是,我们也正在对检查点操作自动化进行研究。因为调度器知道每个数据集的大小以及计算它的消耗的时间,那它应该可以选出所需Checkpoint的那些RDD以最小化系统恢复所需时间。 最后,由于RDD的只读特性使得比常用的共享内存更容易做checkpoint.由于不需要关心一致性的问题,RDD的写出可在后台进行,而不需要程序暂停或进行分布式快照。 六 核心概念 Client:客户端进程,负责提交作业到Master。 Master:Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动分配Driver的资源和启动Executor的资源。 Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor。 Driver: 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。 Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。 六 核心概念 Stage:一个Spark作业一般包含一到多个Stage。 Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。 DAGScheduler: 实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskSc

文档评论(0)

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

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

1亿VIP精品文档

相关文档