Spark on YARN工作原理

来源:互联网 发布:淘宝店铺插件 编辑:程序博客网 时间:2024/05/12 17:01

转自:http://www.wtoutiao.com/p/2e82G8C.html

Spark on YARN工作原理



Spark on YARN工作原理

MapReduce on YARN的工作流程:加载数据,执行mapshufflereduce,将结果写入持久化存储。

Spark on YARN的工作流程:spark中一个job包含多个stage,而非只有mapreduceapplication包含多个job


Spark工作原理

用户通过spark-sumbit提交spark application后,会启动相对应的spark driver进程,从YARN分配得到container,动态的分配executorspark层面并不能动态的调整从Yarn分配的container资源(containerYarn分配资源的基本单位,yarncontainer分配的资源控制体现在vcorememory上)。Yarn根据spark.executor.memoryspark.executor.cores等参数指定的要求的大小分配executor运行的containernum-executors指定executor的数量。资源申请成功后,driver进程将spark作业转化为多个stage。每个stage执行一批tasktask是最小的计算单元,负责执行一模一样的计算逻辑),stage执行完毕后,会在各节点本地磁盘写入中间结果,调度下一个stage,下一个stagetask输入数据是上一个stage输出的中间结果。

Spark-submit提交任务是对应的相关参数如下:

--driver-memory

--executor-memory

--driver-cores

--executor-cores

--driver-cores

--queue

--number-executors

备注(这些参数spark on Yarn都支持,有些参数比如--total-executor-cores之类的spark standaloneMesos支持,具体参数支持情况执行spark-submit --help查看)

Executor内存的分配

--executor-memory中指定的内存或者spark.executor.memory默认的内存有三个用途:

1.Task执行用户编写的代码时使用

2.Task通过shuffle获取上一个stagetask输出,进行聚合等操作

  spark.shuffle.memoryFraction,默认0.2

3.RDD持久化使用

  spark.storage.memoryFraction,默认0.6

0 0
原创粉丝点击