- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)