Spark的动态资源分配
跑spark程序的时候,公司服务器需要排队等资源,参考一些设置,之前不知道,跑的很慢,懂得设置之后简直直接起飞。
简单粗暴上设置代码:
def conf(self):
conf = super(TbtestStatisBase, self).conf
conf.update({
'spark.shuffle.service.enabled': 'true',
'spark.dynamicAllocation.enabled': 'false',
'spark.dynamicAllocation.initialExecutors': ,
'spark.dynamicAllocation.minExecutors': ,
'spark.dynamicAllocation.maxExecutors': ,
'spark.sql.parquet.compression.codec': 'snappy',
'spark.yarn.executor.memoryOverhead': ,
"spark.speculation": 'true',
'spark.kryoserializer.buffer.max': '512m',
})
一小部分设置。简单解析一下:
1、spark.shuffle.service.enabled。用来设置是否开启动态分配。开启了动态分配的Application在申请资源的时候默认会拥有更高的优先级
2、spark.dynamicAllocation.initialExecutors (默认下是3)
spark.dynamicAllocation.minExecutors (默认下是0)
spark.dynamicAllocation.maxExecutors (默认下是30)
Executor应该是所谓资源单位,自己理解为越多执行越快嘛,如果是Yarn的话,就是Containers,一个道理
3、spark.yarn.executor.memoryOverhead 是设置堆外内存大小,和 executor_memory 做个对比:
ExecutorMemory为JVM进程的JAVA堆区域。
MemoryOverhead是JVM进程中除Java堆以外占用的空间大小,包括方法区(永久代)、Java虚拟机栈、本地方法栈、JVM进程本身所用的内存、直接内存(Direct Memory)等。
两者关系:如果用于存储RDD的空间不足,先存储的RDD的分区会被后存储的覆盖。当需要使用丢失分区的数据时,丢失的数据会被重新计算。ExecutorMemory + MemoryOverhead之和(JVM进程总内存)
我只是简单理解堆外内存为一个备用区域吧,还不知道具体什么作用。有遇到内存不够报错的情况,然后调大了MemoryOverhead。
4、理论上:非动态分配情况下,我们必须要等到有100个Executor才能运行Application,并且这100个会一直被占用到程序结束,即便只有一个任务运行了很长时间。动态分配情况下,当有10个Executor的时候,我们的Application就开始运行了,并且我们后续可以继续申请资源,最多申请到100个Executor,当我们有空闲资源的时候,我们可以被释放资源到最少只保留10个Executor,当需要的时候我们有更高的优先级从YARN那儿拿到资源。
但是!
5、用了之后简直起飞。。公司服务器好像根本不存在动态这回事,总是只给几个executor,虽然开始是很快,但执行过程很慢,所以我放弃了,不动态调整了,直接设置死 num_executors = 90。。。然后:
发现一般资源还是挺富裕的嘛,写了90个 也不用等很久。为什么动态一直不肯分给我。。。好多资源,瞬间2个小时缩短为20分钟。
Spark的动态资源分配的更多相关文章
- 记一次有关spark动态资源分配和消息总线的爬坑经历
问题: 线上的spark thriftserver运行一段时间以后,ui的executor页面上显示大量的active task,但是从job页面看,并没有任务在跑.此外,由于在yarn mode下, ...
- 利用动态资源分配优化Spark应用资源利用率
背景 在某地市开展项目的时候,发现数据采集,数据探索,预处理,数据统计,训练预测都需要很多资源,现场资源不够用. 目前该项目的资源3台旧的服务器,每台的资源 内存为128G,cores 为24 (co ...
- spark提交至yarn的的动态资源分配
1.为什么开启动态资源分配 ⽤户提交Spark应⽤到Yarn上时,可以通过spark-submit的num-executors参数显示地指定executor 个数,随后,ApplicationMast ...
- Spark动态资源分配-Dynamic Resource Allocation
微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理.OLAP分析与可视化平台 | 赞助作者:赞助作者 Spark动态资源分配-Dynamic Resource Allocation S ...
- spark on yarn 动态资源分配报错的解决:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:spark_shuffle does not exist
组件:cdh5.14.0 spark是自己编译的spark2.1.0-cdh5.14.0 第一步:确认spark-defaults.conf中添加了如下配置: spark.shuffle.servic ...
- Spark如何进行动态资源分配
一.操作场景 对于Spark应用来说,资源是影响Spark应用执行效率的一个重要因素.当一个长期运行的服务,若分配给它多个Executor,可是却没有任何任务分配给它,而此时有其他的应用却资源紧张,这 ...
- 「Spark从精通到重新入门(二)」Spark中不可不知的动态资源分配
前言 资源是影响 Spark 应用执行效率的一个重要因素.Spark 应用中真正执行 task 的组件是 Executor,可以通过spark.executor.instances 指定 Spark ...
- 【Spark】Spark Streaming 动态更新filter关注的内容
Spark Streaming 动态更新filter关注的内容 spark streaming new thread on driver_百度搜索 (1 封私信)Spark Streaming 动态更 ...
- spark任务调度模式,动态资源分配
官网链接: http://spark.apache.org/docs/latest/job-scheduling.html 主要介绍: 1 application级调度方式 2 单个applicati ...
随机推荐
- Java之多线程 Atomic(原子的)
一.何谓Atomic? Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位.计算机中的Atomic是指不能分割成若干部分的意思.如果一段代码被认为是Atomic,则表示这段代码在执行过程中 ...
- MongoDB 那些坑(转)
MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷 ...
- LPC43XX TQFP144 IO Pinout
- bitnami redmine配置全过程
常见问题: 我在自己的机器上面配置完毕以后,移植到另外一台机器上面,登陆页面总是在检查network,并且最后网络加载失败,不论我是用桥接还是NAT方式连接.登陆系统以后,我尝试连接网络失败,尝试执行 ...
- USB设备的插入和弹出的监听以及软弹出可移动媒体(如Windows的移除USB设备) .
一.监听USB设备的插入和弹出 当USB设备插入或者弹出时,Windows会产生一条全局消息:WM_DEVICECHANGE 我们需要做的是,获得这条消息的wParam参数,如果为DBT_DEVICE ...
- leetcode 题解 || Valid Parentheses 问题
problem: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if ...
- Delphi XE5 Android 运行黑屏卡死的解决方法
1. 确保正确安装Android SDK: 开始菜单 > 所有程序 > Embarcadero RAD Studio XE5 > > Android Tools > 打开 ...
- 【java】判断某段字符串的编码方式,并按照新的编码方式输出
具体操作: String destination ="testå¾·ç\u008E\u009B西äº\u009A"; try { if(destination.equals(n ...
- XVFB实现selenium在linux上无界面运行安装篇
selenium在linux上无界面运行,其实是非常简单的.具体的方法有使用HtmlUnitDriver或者PhantomJSDriver,有时间我会写写关于这两个东东的文章,其实基本和ChromeD ...
- 云服务器 ECS Linux 系统安装图形化桌面 (centos7 ubuntu14)
基于性能及通用性等因素,默认情况下,阿里云官方公共 Linux 系统镜像不会安装图形化桌面组件.本文简述了常用操作系统图形化桌面安装说明,您可以根据需求进行配置系统. 注意:图形化桌面可能会 显著降低 ...