大数据开荒本事之Spark Job物理实践剖析

2021-12-06 08:13:35来源:永乐国际游戏 作者:永乐国际注册
原创
1

  给定如此一个繁杂数据依赖图,怎么合理划分 stage,并未确定 task 的类型和个数?

  一个直观思法是将前后干系的 RDDs 构成一个 stage,每个箭头天生一个 task。看待两个 RDD 蚁合成一个 RDD 的状况,这三个 RDD 构成一个 stage。如此固然能够处分题目,但明显作用不高。除了作用题目,这个思法又有一个更吃紧的题目:豪爽中央数据需求存储。看待 task 来说,其推广结果要么要存到磁盘,要么存到内存,或者两者皆有。要是每个箭头都是 task 的话,每个 RDD 内里的数据都需求存起来,占用空间可思而知。

  幼心视察一下逻辑推广图会觉察:正在每个位子 RDD 中,每个 partition 是独立的,也便是说正在 RDD 内部,每个 partition 数据依赖各自不会彼此滋扰。因而,一个斗胆的思法是将一共流程图作为一个 stage,为终末一个 finalRDD 中的每个 partition 分派一个 task。图示如下:

  一起的粗箭头组合成第一个 task,该 task 谋略结尾后趁便将 CoGroupedRDD 依然谋略获得的第二个和第三个 partition 存起来。之后第二个 task(细实线)只需谋略两步,第三个 task(细线)也只需求谋略两步,终末获得结果。

  一共推广流程没有题目,但不行直接套用正在 Spark 的物理推广图上,由于 MapReduce 流程图方便、固定,并且没有 pipeline。

  回思 pipeline 的思思是数据用的功夫再算,并且数据是流到要谋略的位子的。Result 发生的地方的便是要谋略的位子,要确定 “需求谋略的数据”,咱们能够从后往前推,需求哪个 partition 就谋略哪个 partition,要是 partition 内里没罕见据,就接续向前推,变成 computing chain。如此推下去,结果便是:需求最初谋略出每个 stage 最左边的 RDD 中的某些 partition。

  前面先容了逻辑和物理推广图的天生道理,那么,怎样触发 job 的天生?依然先容了 task,那么 job 是什么?

  下面方便解析下 job 的天生和提叮咛码,提交历程正在 Architecture 那一章也会有图文并茂的解析:

  从逻辑推广图的创立,到将其转换成物理推广图的历程很经典,历程中的 dependency 划分,pipeline,stage 支解,task 天生 都是有层有次,有理有据的。

    联系我们
    电话: 025-68271900
    传真: 025-68271906
    Email: howso@howso.cn
    微信: 永乐国际游戏科技
    微博: 2641422335
    地址: 江苏省南京市雨花台区软件大道119号丰盛商汇1号楼三楼