笔记6-10.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
笔记6-10

第六讲:彻底解密WordCount运行原理 这里严重纪要: 在第十一次课程里的图 :中的形成的一个单词集合。这个集合RDD是分布式的RDD,大的分布式的单词集合,分布在各台机器上(单词切分还是数据在原来的机器上,没有传递), 通过,并且会进行local的汇总,然后在进行全局的汇总产生hadoopRDD的时候,是分布在hadoop集群上的数据,进行切分成行,然后进行然后进入内存中形成一个(形)的RDD, 此时有可能进行数据移动,如果hadoop机器和spark机器不同时在一起的话此时是进行数据移动的。 (此时应该是资源统筹好了,然后进行分配任务,中间计算的时候是每台节点进行计算自己的任务:除了任务出现故障,不会出现数据移动进行计算)下一次的数据移动就是在shuffle阶段了 ===================== 从数据流动的视角分析:数据是如何被处理的:数据流向图:数据不经过磁盘 内存不够的时候,按照分区策略:一个Partition数据比较大(此处的Partition跟最初的Partition不同)每一个Partition耗费内存比较大,这样就比较容易出现oom。可以开并行度大一些。单个并行数个数一样的时候,耗费内存越多。会容易出现oom,开大并行,那么就会散落在不同的机器上。平均下来,不会出现某一个机器占用内存特别多的情况。 saveAsTextFile的时候会依赖前面的关系进行计算这就是回溯的过程 第七讲:HA下的Spark集群工作原理解密 第八讲:Spark内核架构解密 spark内核架构:=== 其实就是从driver端:开始到worker端的工作流程 spark内核架构:参照写的wc进行分析架构:从conf创建 === RDD的创建和结果存储: driver的代码 + executor的处理代码 sparkRuntime: driver:运行程序的时候,具有main方法,并且创建了sc的一个环境对象(sc是开发者使用集群各种功能的唯一通道) *****************首先说明一点,这里所说的一切都是standalone模式不是on yarn等。 sc本身是整个(程序运行)调度的核心,创建的时候会创建高层调度器DAGScheduler,底层调度器taskScheduler和schedulerbackender: 在创建对象的过程中也会想master注册当前的程序,master会给当前程序划分资源,根据action进行触发job,job里面有一系列的RDD, 按照依赖向前回溯,如果是宽依赖的时候,就会划分为不同的stage,stage划分完成之后,就会交给底层的调度器taskscheduler,taskScheduler拿到这个任务集合 (因为同一个stage在不同机器内部都是计算逻辑一样的任务,只不过是数据不一样)底层调度器就会根据数据的本地性把任务发送到executor进行执行, 而且executor在任务运行结束或是 任务运行出状况都会向driver进行汇报。运行完毕,sc和他创建的对象都关闭。 sparkContext在实例化的时候初始化各个调度器外还进行初始化sparkenv,blockManager master,trackManager master 高层调度器:把我们整个程序划分为多个小阶段 底层调度器:计算每个阶段任务该如何处理。 schedulerBackender:管理整个集群中为这个当前的程序分配的计算资源,(分配的计算资源本身就是executor) driver是应用程序运行时候的核心: 负责了整个任务的调度,并且会向master申请资源,完成具体作业的过程。 应用程序=dirver部分代码(conf -context)+各个executor的代码(业务逻辑的代码) 看sparkCluster图,executor负责task的执行:线程池并发处理数据分片和资源复用(hadoop的jvm不能复用) 每一个work默认开启一个executor,可以配置为多个。 看情况进行调整:cpucore多个如果只有一个executor来执行任务也会浪费资源:任务数据比较大,就容易出现oom,就需要进行分为多个executor。 接下来就是创建了RDD:具体的业务上的实现。 ClusterManager:是获取资源的外部服务:是master:spark程序的运行不依赖于clusterManager。 使用的是粗粒度的分配方式。 work:管理当前节点的内存和cpu使用状况的执行任务的节点。会接受master具体的命令通过executorRunner启动一个新的

文档评论(0)

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

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

1亿VIP精品文档

相关文档