您的位置:首页 > 运维架构 > 网站架构

从Spark 架构中透视Job

2016-05-13 23:56 447 查看
spark-shell中默认情况下没有任何的Job

默认的资源分配方式:在每个Worker上为当前程序分配一个ExecutorBackend进行,且默认情况下会最大化的使用Cores和Memory

在一个Executor中一次性最多能够运行多少并发的Task取决于当前Executor能够使用的Cores的数量

88个任务具体分配给谁 主要取决于数据本地性

并行度也是被继承的

线程是否关系具体运行什么代码?

答:由于线程不关心具体Task中运行什么代码,所以Task和Thread是解耦和的,所以Thread是可以被复用的!



注释:当Spark集群启动的时候,首先启动Master进程负责整个集群资源的管理和分配并接受作业的提交且为作业分配计算计算资源,每个工作节点默认情况下都会启动一个WorkerProcess来管理当前节点的Memory、CPU等计算资源并且向Master汇报Worker还能够正常工作;当用户提交作业给Master的时候,Master会为程序分配ID并分配计算资源,默认情况下回为当前的应用程序在每个WorkerProcess下面分配一个CoarseGrainedExecutroBackend进程,该进程默认情况下回最大化的使用当前节点上的内存和CPU。注意:worker不管理资源,集群资源是master管理的和调配的;我们说WorkerProcess管理当前节点的内存和CPU等计算资源,实质上通过Master来管理每台机器上的计算资源的!!!

Worker节点上有Worker Process,WorkerProcess会接受Master的指令为当前要运行的应用程序分配CoarseGrainedExecutorBackend进程



注释:Stage0是Stage1的Mapper

Stage1是Stage2的Mapper

Stage1是Stage0的Reducer

Stage2是Stage1的Reducer

Spark是一个更加精致和高效的MapReduce思想的具体实现

最后一个Stage里面的Task是ResultTask类型

前面所有的Stage中Task的类型都是ShuffleMapTask类型

Stage里面的内容一定是在Executor中执行的!而且Stage必须从前往后执行!

Spark的一个应用程序中可以因为不同的Action产生众多的Job,每个Job至少有一个Stage
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: