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延迟调度与动态资源管理的更多相关文章

  1. Spark Job调度

    Spark Job调度 1.概览 Spark有几种用于在计算之间调度资源的工具.首先,回想一下,如集群模式概述中所述,每个Spark应用程序(SparkContext的实例)都运行一组独立的execu ...

  2. Spark的调度

    作业调度简介 设计者将资源进行不同粒度的抽象建模,然后将资源统一放入调度器,通过一定的算法进行调度,最终要达到高吞吐或者低访问延时的目的. Spark在各种运行模式中各个角色实现的功能基本一致,只不过 ...

  3. 通过源码理解Spring中@Scheduled的实现原理并且实现调度任务动态装载

    前提 最近的新项目和数据同步相关,有定时调度的需求.之前一直有使用过Quartz.XXL-Job.Easy Scheduler等调度框架,后来越发觉得这些框架太重量级了,于是想到了Spring内置的S ...

  4. Spark Streaming揭秘 Day21 动态Batch size实现初探(下)

    Spark Streaming揭秘 Day21 动态Batch size实现初探(下) 接昨天的描述,今天继续解析动态Batch size调整的实现. 算法 动态调整采用了Fix-point迭代算法, ...

  5. Spark Streaming揭秘 Day20 动态Batch size实现初探(上)

    Spark Streaming揭秘 Day20 动态Batch size实现初探(上) 今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机 ...

  6. spark application调度机制(spreadOutApps,oneExecutorPerWorker 算法)

    1.要想明白spark application调度机制,需要回答一下几个问题: 1.谁来调度? 2.为谁调度? 3.调度什么? 3.何时调度? 4.调度算法 前四个问题可以用如下一句话里来回答:每当集 ...

  7. spark任务调度模式,动态资源分配

    官网链接: http://spark.apache.org/docs/latest/job-scheduling.html 主要介绍: 1 application级调度方式 2 单个applicati ...

  8. Spark Streaming揭秘 Day17 资源动态分配

    Spark Streaming揭秘 Day17 资源动态分配 今天,让我们研究一下一个在Spark中非常重要的特性:资源动态分配. 为什么要动态分配?于Spark不断运行,对资源也有不小的消耗,在默认 ...

  9. 资源管理与调度系统-YARN的基本架构与原理

    资源管理与调度系统-YARN的基本架构与原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 为了能够对集群中的资源进行统一管理和调度,Hadoop2.0引入了数据操作系统YARN. ...

随机推荐

  1. c++中如何判断sqlite表是否存在

    在项目中遇到需要判断sqlite数据库中某个表是否存在,上网搜索一些资料后,解决了问题,如下: 首先,在每个sqlite数据库中,都有一个名为sqlite_master的表,它定义了数据库的模式,它的 ...

  2. 《算法竞赛进阶指南》 1 (P4) a^b 快速幂

    快速幂 #include<cstdio> #include<cmath> #include<iostream> using namespace std; long ...

  3. 复习:C语言基础知识1

    占位符: %d, %i,代表整数,%f-浮点,%s,字符串,%c,char. %p 指针,%fL 长long,%e科学计数,%g 小数或科学计数. C语言中的格式占位符: %a,%A 读入一个浮点值( ...

  4. [终极巨坑]golang+vue开发日记【三】,登陆界面制作(二)

    写在前面 本期内容是承接上期已经做好了登陆界面来写的,不过本期是以golang为主,可能需要大家把最基本的语法结构熟悉一下:菜鸟教程.这样的话方便展开,自然而然的,本篇也是直接实战为主.这次需要依赖m ...

  5. PowerBuilder学习笔记之14用户自定义对象

    教程链接:https://wenku.baidu.com/view/9730d1c7aa00b52acec7ca05.html?re=view&rec_flag=default&sxt ...

  6. Java 8 HashMap 源码解析

    HashMap 使用数组.链表和红黑树存储键值对,当链表足够长时,会转换为红黑树.HashMap 是非线程安全的. HashMap 中的常量 static final int DEFAULT_INIT ...

  7. 基于Dapper的开源LINQ扩展,且支持分库分表自动生成实体二

    LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼. 文档地址: https://lining ...

  8. Ubuntu安装MySQL配置远程登录、utf8mb4字符集

    2019/11/19, Ubuntu Server 18.04,MySQL 5.7 摘要:Ubuntu Server 18.04 安装MySQL 5.7 并配置远程登录.utf8mb4字符集 由于My ...

  9. js图片压缩+ajax上传

    图片压缩用到了localresizeimg 地址: https://github.com/think2011/localResizeIMG 用起来比较简单 <input type="f ...

  10. kafka安装和简单测试

    kafka安装和简单测试 # 安装zookeeper(apache-zookeeper-3.5.6-bin)https://archive.apache.org/dist/zookeeper/zook ...