spark系统实现yarn资源的自动调度

参考:

http://blog.csdn.net/dandykang/article/details/48160953

对于Spark应用来说,资源是影响Spark应用执行效率的一个重要因素。当一个长期运行 的服务(比如Thrift Server),若分配给它多个Executor,可是却没有任何任务分配给它,而此时有其他的应用却资源张,这就造成了很大的资源浪费和资源不合理的调度。

动态资源调度就是为了解决这种场景,根据当前应用任务的负载情况,实时的增减 Executor个数,从而实现动态分配资源,使整个Spark系统更加健康。

配置步骤:

1. 需要先配置External shuffle service。参见spark on yarn(External shuffle service)配置

2. 在“spark-defaults.conf”中必须添加配置项“spark.dynamicAllocation.enabled”,并将该参数的值设置为“true”,表示开启动态资源调度功能。默认情况下关闭此功能。

3. 根据情况配置一些可选参数

以下是基本配置参考

spark.shuffle.service.enabled                true   配置External shuffle Service服务(一定要配置启用)

spark.shuffle.service.port                       7337

spark.dynamicAllocation.enabled         true   启用动态资源调度

spark.dynamicAllocation.minExecutors    3    每个应用中最少executor的个数

spark.dynamicAllocation.maxExecutors    8    每个应用中最多executor的个数

可选参数说明:

配置项                                                                                    说明                                                                默认值

spark.dynamicAllocation.minExecutors                             最小Executor个数。                                        0

spark.dynamicAllocation.initialExecutors                          初始Executor个数。                                        spark.dynamicAllocation.minExecutors

spark.dynamicAllocation.maxExecutors                             最大executor个数。                                        Integer.MAX_VALUE

spark.dynamicAllocation.schedulerBacklogTimeout         调度第一次超时时间。                                 1(s)

spark.dynamicAllocation.sustainedSchedulerBacklogTimeout 调度第二次及之后超时时间。      spark.dynamicAllocation.schedulerBacklogTimeout

spark.dynamicAllocation.executorIdleTimeout                  普通Executor空闲超时时间。                          60(s)

spark.dynamicAllocation.cachedExecutorIdleTimeout      含有cached blocks的Executor空闲超时时间。spark.dynamicAllocation.executorIdleTimeout的2倍

说明

1. 使用动态资源调度功能,必须配置External Shuffle Service。如果没有使用External Shuffle Service,Executor被杀时会丢失shuffle文件。

2. 配置了动态资源调度功能,就不能再单独配置Executor的个数,否则会报错退出。

3. 使用动态资源调度功能,能保证最少的executor的个数(spark.dynamicAllocation.minExecutors)

时间: 2024-08-10 21:22:52

spark系统实现yarn资源的自动调度的相关文章

在云计算资源池上自动部署业务应用的大数据平台组件开发实战

在云计算提供的分布式资源池构建能够自动部署业务应用的平台组件,该平台组件能够非常简易的被众多的并发终端使用,从而轻而易举的提供业务支持: 尤其是值得注意的是,如果有需要的话,我们的不同业务组件和业务本身可以发生数据和资源的共享,这对于资源和数据的复用,尤其是对于效率的提升是至关重要的.         课程介绍   基于“在资源池上自动部署业务应用的平台组件”的要求,课程包含Spark的架构设计.Spark编程模型.Spark内核框架源码剖析.Spark的广播变量与累加器.Shark的原理和使用

[Spark内核] 第35课:打通 Spark 系统运行内幕机制循环流程

本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每个 Stage 内部有一系列任務,前面有分享過,任务是并行计算啦,这是并行计算的逻辑是完全相同的,只不过是处理的数据不同而已,DAGScheduler 会以 TaskSet 的方式把我们一个 DAG 构造的 Stage 中的所有任务提交给底层的调度器 TaskScheduler,TaskSchedu

Spark源码分析之六:Task调度(二)

话说在<Spark源码分析之五:Task调度(一)>一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法.这个方法针对接收到的ReviveOffers事件进行处理.代码如下: [java] view plain copy // Make fake resource offers on all executors // 在所有的executors上提供假的资源(抽象的资源,也就是资源的对象信息,我是这么理解的) private def makeOffers

YARN资源调度策略之Capacity Scheduler

背景 yarn默认使用的是最简单的FIFO调度器,即一个default队列,所有用户共享,分配资源也是先到先得,没有优先级之分.有时一两个任务就把资源全占了,其他任务吃不到资源造成饥饿,显然这样的资源分配是不合理的(在当今社会主义之中,我们要共同富裕啊).yarn还有两种资源调度器,capacity schedule和fair schedule,本文主要研究下capacity schedule. 什么是capacity schedule Capacity Schedule调度器以队列为单位划分资

【转载】 Spark性能优化:资源调优篇

在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置.资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢:或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常.总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行.因此我们必须对Spark作业的资源使

DT大数据梦工厂第三十五课 Spark系统运行循环流程

本节课内容: 1.     TaskScheduler工作原理 2.     TaskScheduler源码 一.TaskScheduler工作原理 总体调度图: 通过前几节课的讲解,RDD和DAGScheduler以及Worker都已有深入的讲解,这节课我们主要讲解TaskScheduler的运行原理. 回顾: DAGScheduler面向整个Job划分多个Stage,划分是从后往前的回溯过程:运行时从前往后运行的.每个Stage中有很多任务Task,Task是可以并行执行的.它们的执行逻辑完

在Linux系统中文件(资源)和用户的管理

一个可执行二进制程序,被加载到内存,被内核调度到CPU上运行,这时候,就表现了一个进程.也可以说进程是程序的一个实例,是程序的动态表现. 在 Linux 系统中进程(process)是有属主的,也就是该进程以哪个用户的身份运行的.大家都知道,程序有输入和输出,也称这为程序IO.如果我们程序数据输入是磁盘.如,Web 服务器,接收用户的请求之后,把网页数据从磁盘中读入加工之后再把数据响应给用户.如果,发起Web 服务进程的用户没有读取该用户请求网页文件的权限.则无法响应用户的请求了.所以,文件(资

Hadoop YARN资源隔离技术

YARN对内存资源和CPU资源采用了不同的资源隔离方案.对于内存资源,它是一种限制性资源,它的量的大小直接决定应用程序的死活,因为应用程序到达内存限制,会发生OOM,就会被杀死.CPU资源一般用Cgroups进行资源控制,Cgroups控制资源测试可以参见这篇博文Cgroups控制cpu,内存,io示例,内存资源隔离除Cgroups之外提供了另外一个更灵活的方案,就是线程监控方案. 默认情况下YARN采用线程监控的方案控制内存使用,采用这种机制的原因有两点: 1.Java创建子进程采用了"for

体验搜狐PaaS平台搜狐云景-自动调度(Autoscale)

今天,收到一封「搜狐云景」送邀请码的邮件,价值 200 rmb,立马前往官网简单了解一下,这个玩意儿是搜狐公司云战略的一个产品,一个 PaaS 平台,简单了解了一下特性: 1.自由定制运行环境,这表示支持多语言环境,官网说支持 Python.Java.PHP.Lua.Ruby.Node.js 等语言,这对于我这 Python 码农来说是利好啊,200 rmb可以在这平台跑跑博客了. 2.灵活自定义调度,这表示用户可以根据自身应用规模设置调度规则,这种高大上的技术目前只在 AWS 的 E2C 上看