spark延迟调度与动态资源管理

摘要:
Spark任务的调度过程中有五个级别的局部性:因为Spark在任务调度过程中会出现以下两种情况:1。数据所在计算机上的执行器没有空闲的CPU资源。2.当具有空闲CPU资源的执行器在数据所在的机器上没有数据时,延迟的调度将使任务等待一定时间(默认为配置spark.locality.wait=3s)。

Spark中的延迟调度

Spark的Task的调度过程有五个本地性级别:PROCESS_NODE、NODE_LOCAL、NO_PREF、RACK_LOCAL、ANY。在理想的状态下,我们肯定是想所有的Task的调度都是PROCESS_NODE级别的,这样的话所有的Task都是在数据所在的机器上进行计算,这样的计算效率是最好的。但是实际的情况并不是这样的,因为Spark在Task的调度过程会发生如下两种情况:
1、数据所在的机器上的Executor没有空闲的cpu资源
2、含有空闲cpu资源的Executor所在的机器上并没有数据
出现以上两种情况的时候,我们可能就需要舍弃掉最好的数据本地性了,这就是延迟调度需要做的事情,对于第一种情况,延迟调度让Task等一定的时间(默认是配置spark.locality.wait=3s),以期望数据所在机器上的Executor上的cpu释放,然后再调度到这个Executor上,那如果这个Executor的cpu一直没有释放(即Task等的时间超过一定的时间了)呢,这个时候Spark就直接将这个Task调度到含有空闲cpu资源但是没有数据的Executor,这个时候虽然Task的本地性级别不高,但是可能比你等待含有数据的Executor释放空闲cpu来的更高效

 

Spark中的动态资源管理

根据集群计算需要的资源动态的决定Executor的个数,在一个Spark应用执行过程中,如果一个Executor没有任何的Task执行,这种空闲状态如果保持了一定的时间(默认是60s)后,那么这个Executor将会从集群中被删除掉。当Driver端有Task pending等待了一定时间(默认是1秒)后还没被调度执行的话,则会申请增加Executor,这样动态的决定需要Executor可以使得整个集群资源使用效率更高,更多的会用在spark-shell以及Spark SQL的ThriftServer中

免责声明:文章转载自《spark延迟调度与动态资源管理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IOS开发之__bridge,__bridge_transfer和__bridge_retained (转)如何通过命令行创建和设置一个MySQL用户下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

reuqest模块及UA反扒机制

requests模块 爬虫中一个基于网络请求的模块 pip install requests 作用:模拟浏览器发起请求 编码流程: 1 . 指定url 2 . 发起请求 3 . 获取响应数据(爬取到的页面源码数据) 4 . 进行持久化存储 简单例子: #指定爬取的url (以搜狗为例) url = "https://www.sogou.com"...

【Raspberry Pi】crontab 定时任务

在linux上做定时任务一般用crond 两种方法上文已列,但昨天写的crond命令却一直都没有运行,上网查,有说是环境变量的,也有说是时间问题的,都改过,但还没有效。 今天再次认真读了一遍crontab的说明,发现昨天的命令理解错了,少打了一个星号,再改多打一个空格也不行,又改,在非root用户下貌似也不行。最后用root权限来写终于成功: sudo c...

数据分析--降维--LDA和PCA

一、因子分析   因子分析是将具有错综复杂关系的变量(或样本)综合为少数几个因子,以再现原始变量和因子之间的相互关系,探讨多个能够直接测量,并且具有一定相关性的实测指标是如何受少数几个内在的独立因子所支配,并且在条件许可时借此尝试对变量进行分类。   因子分析的基本思想   根据变量间相关性的大小把变量分组,使得同组内的变量之间的相关性(共性)较高,并用一...

flask-caching缓存

flask-caching缓存 为了减少web请求响应时间,并且尽量减少缓存穿透问题,flask-caching插件可以在自己设定时间范围内直接返回结果,而不用去从数据库中查询。 实例化Cache对象 # 实例化Cache对象 from flask_caching import Cache cache = Cache() flask注册 def in...

RAID和LVM磁盘阵列

RAID磁盘冗余阵列  CPU的处理性能保持着高速增长,Intel公司在2017年最新发布的i9-7980XE处理器芯片更是达到了18核心36线程。但与此同时,硬盘设备的性能提升却不是很大,因此逐渐成为当代计算机整体性能的瓶颈。而且,由于硬盘设备需要进行持续、频繁、大量的IO操作,相较于其他设备,其损坏几率也大幅增加,导致重要数据丢失的几率也随之增加。 1...

Android View的Adapter

1 Adapter适配的对象是View Adapter通过为View提供指定格式的数据来适配View,让View可以以事先约定好的方式将内容展示给用户。 所以,进行UI设计的关键是搞清楚各个View组件的外观以及它们需要的数据的格式,然后选用合适的Adapter交给它们即可。 2 观察者模式在Android Adapter中的应用  所谓的观察者就是说,让...