热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark的动态资源分配机制

spark.dynamicAllocation.enabled:Whethertousedynamicresourceallocation,whichscalesthenumber

spark.dynamicAllocation.enabled:Whether to use dynamic resource allocation, which scales the number of executors registered with this application up and down based on the workload. For more detail, see the description here.

该配置项用于配置是否使用动态资源分配,根据工作负载调整应用程序注册的executor的数量。默认为false(至少在spark2.2-spark2.4中如此),在CDH发行版中默认为true,

与之相关的还有如下配置:spark.dynamicAllocation.minExecutors, spark.dynamicAllocation.maxExecutors, and spark.dynamicAllocation.initialExecutors spark.dynamicAllocation.executorAllocationRatio

如果启用动态分配,在executor空闲spark.dynamicAllocation.executorIdleTimeout(默认60s)之后将被释放。

spark.dynamicAllocation.minExecutors和spark.dynamicAllocation.maxExecutors分别为分配的最小及最大值,spark.dynamicAllocation.initialExecutors为初始分配的值,默认取值为minExecutors。在–num-executors参数设置后,将使用此设置的值作为动态分配executor数的初始值。

在spark1.6中,如果同时设置dynamicAllocation及num-executors,启动时会有

WARN spark.SparkContext: Dynamic Allocation and num executors both set, thus dynamic allocation disabled。

在spark2中已经不再禁用了,如果num-executors也设置的话只是作为初始值存在而已。

如果启用dynamicAllocation则spark.shuffle.service.enable必须设置为true,此选项用于启动外部的shuffle服务,免得在executor释放时造成数据丢失。外部的shuffle服务运行在NodeManager节点中,独立于spark的executor,在spark配置中通过spark.shuffle.service.port指定其端口,默认为7337。

一个简单实验spark动态分配的联系如下:”spark-shell –conf spark.dynamicAllocation.minExecutors=3 –num-executors 6″ 其设置了minExecutors为3, num-executors为6,那么最开始启动后是有1个AM加6个executors存在的,1分钟后只有1个AM加3个executor存在了

19/03/18 18:51:44 INFO yarn.YarnRMClient: Registering the ApplicationMaster
19/03/18 18:51:44 INFO util.Utils: Using initial executors = 6, max of spark.dynamicAllocation.initialExecutors, spark.dynamicAllocation.minExecutors and spark.executor.instances
19/03/18 18:51:44 INFO yarn.YarnAllocator: Will request 6 executor container(s), each with 1 core(s) and 1408 MB memory (including 384 MB of overhead)
19/03/18 18:51:44 INFO yarn.YarnAllocator: Submitted 6 unlocalized container requests.
19/03/18 18:51:44 INFO yarn.ApplicationMaster: Started progress reporter thread with (heartbeat : 3000, initial allocation : 200) intervals
19/03/18 18:51:45 INFO yarn.YarnAllocator: Launching container container_1549688715051_0631_01_000002 on host zjh-master
19/03/18 18:51:45 INFO yarn.YarnAllocator: Launching container container_1549688715051_0631_01_000003 on host zjh-master
19/03/18 18:51:45 INFO yarn.YarnAllocator: Launching container container_1549688715051_0631_01_000004 on host zjh-master
19/03/18 18:51:45 INFO yarn.YarnAllocator: Launching container container_1549688715051_0631_01_000005 on host zjh-master
19/03/18 18:51:45 INFO yarn.YarnAllocator: Launching container container_1549688715051_0631_01_000006 on host zjh-master
19/03/18 18:51:45 INFO yarn.YarnAllocator: Launching container container_1549688715051_0631_01_000007 on host zjh-master
19/03/18 18:51:45 INFO yarn.YarnAllocator: Received 6 containers from YARN, launching executors on 6 of them.
19/03/18 18:52:49 INFO yarn.YarnAllocator: Driver requested a total number of 5 executor(s).
19/03/18 18:52:49 INFO yarn.ApplicationMaster$AMEndpoint: Driver requested to kill executor(s) 2.
19/03/18 18:52:49 INFO yarn.YarnAllocator: Driver requested a total number of 3 executor(s).
19/03/18 18:52:49 INFO yarn.ApplicationMaster$AMEndpoint: Driver requested to kill executor(s) 5, 1.


推荐阅读
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 2022年2月 微信小程序 app.json 配置详解:启用调试模式
    本文将详细介绍如何在微信小程序的 app.json 文件中启用调试模式(debug),并通过实际案例展示其配置方法和应用场景。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
author-avatar
ao吖浩_257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有