热门标签 | 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.


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
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社区 版权所有