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

SparkJob调度

概况spark提供了一些方案来调度资源。首先,每个spark程序都在跑在若干个独立的executor集群上的(其中executor是一个jvm来runtask和storedata)

概况

spark提供了一些方案来调度资源。首先,每个spark程序都在跑在若干个独立的executor集群上的(其中executor是一个jvm来run task和store data),集群管理提供了集群层面的资源分配。其次,对于每一个spark程序来说,多个由不同进程提交的job(actions)可以并行的执行。这种情况很常见,sparkContext提供了一种公平调度的机制。

spark程序间的调度

不同的用户使用同一个集群,并使用不同的配置。最初需要解决的就是资源的分割。目前常见的分配原则有下列三种,其中yarn最常用。

  • standalone 默认情况下spark程序是FIFO的形式被提交的,并占用所有可用资源。可以通过设置spark.cores.max控制占用core的数量,并通过spark.executor.memory控制每个executor使用的内存。
  • yarn 主要通过 –num-executors或spark.executor.instances、–executor-memory或spark.executor.memory、–executor-cores或spark.executor.cores来控制。
    目前不同的spark 程序之间不可以共享数据。但是可以通过获取和释放共享资源,比如动态资源分配。
spark程序内的调度

由不同线程提交的并行的job可以被同时执行,spark内部的调度是线程安全的。
一般来说,spark的调度是FIFO的,每个job还可以分成stages。如果第一个job中的stage有task运行,之后的job就需要等待。
从spark0.8开始,可以配置公平调度器,spark 分配tasks是以一种轮询的方式,短的job可以提前被执行完。可以在sparkContext中设置
spark.scheduler.mode=FAIR

公平调度

公平调度提供了一种方式将jobs一起放到某个资源池中,可以给某些重要的jobs提供高优先级的资源。可以保证需要重要jobs可以提前完成。
一般情况下,jobs被提交到了default pool中,不过可以在代码中随时控制当前线程的job在哪个pool中执行,比如sc.setLocalProperty(“spark.scheduler.pool”,”pool”),也可以取消使用当前的pool,sc.setLocalProperty(“spark.scheduler.pool”, null)
以上的使用都需要配置pool的配置文件。具体有三个参数,参数的含义如下:

  • schedulingMode: 可以使FIFO和FAIR,控制pool中job的执行模式。
  • weight: 控制和其他pool对集群资源的占用权重,默认为1,如果设置为2,这个pool就会获取2倍的资源。不仅如此,还可以控制jobs的执行时间,同时如果设置为1000,此pool总是启动tasks无论什么时候jobs active。
  • minShare 最基本的资源分配。先满足此值,然后再分配weight
    可以通过设置conf.set(“spark.scheduler.allocation.file”, “/path/to/file”)使用自己配置的文件。格式如下:




FAIR
1
2


FIFO
2
3


如果在代码中使用sc.setLocalProperty(“spark.scheduler.pool”, “pool1”),并且不配置上述文件,每个分配池基本都是使用FIFO,weight=1,minshare=0.


推荐阅读
  • 各个组件confspark-env.sh配置spark的环境变量confspark-default.conf配置spark应用默认的配置项和spark-env.sh有重合之处,可在 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 一些东西不经常用老忘记,记在这里有空就看看,一起进步H3C相关配置绑定接口的ip地址与MAC地址[H3C-GigabitEthernet107]user-bindip-addres ... [详细]
  • iOS——应用内调用Face ID、Touch ID
    注意到很多iOS非原生应用都在应用内调用了FaceID,以来辅助登陆和进行隐私操作的确认,下面是如何调用FaceID或TouchID。获取用户隐私权限 ... [详细]
  • 在网页上发布统计曲线(转)[more]一、引言在寥恋腎nte.NET上制作极富个性化的主页、及时发布令人心动的信息,以便吸引全世界不同肤色、不同职业的人们驻足观看,以致流连忘返 ... [详细]
  • 不懂性能优化,再强的计算机也白玩
    不懂性能优化,再强的计算机也白玩-Python的优秀有目共睹,不过说的性能,还真比不了Java、C、Go,有没有提升性能的技巧或方法呢?今天我们一起学习下提升Python性能的方式 ... [详细]
  • NPDP第五章 工具与度量
    什么是创意开发阶段作用:早起产生初步的产品概念;中期用于解决实施问题;后期用于规划上市。创意开发是创造、发展和传达新创意的创造性过程&# ... [详细]
  • crossorigin注解添加了解决不了跨域问题_CORS与@CrossOrigin详解
    1、跨域的基本概念a、跨域的解释要了解跨域,首先需要知晓浏览器的同源策略,简单的说就是两个请求协议、端口、主机都相同,则两个请求具有相同的 ... [详细]
  • Java的核心库提供了大量的现成的类供我们使用。本节我们介绍几个常用的工具类。Math顾名思义,Math类就是用来进行数学计算的,它提供了大量的静态 ... [详细]
  • intellij idea修改maven配置时总是恢复默认配置的解决方法idea版本(2020.2.x)_java
    这篇文章主要介绍了intellijidea修改maven配置时总是恢复默认配置的解决方法idea版本(2020.2.x),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考 ... [详细]
  • 安全加密C语言库OpenSSL,在Android中服务器和客户端之间的签名验证和数据加密通信等。OpenSSL系列文章:一、AndroidCMake轻松 ... [详细]
  • MFC中的文件读写操作
    由于要写个游戏工具方便编程,要用到文件类的操作,看到这篇文章不错,特转载计算机室如何管理自身所存放着的大量的信息的呢?win ... [详细]
  • 下载源码切换分支{代码}申明环境变量{代码}解决microbench工程编译问题报错信息{代码}解决办法批改pom.xml,显式援用jct包{代码}待续 ... [详细]
  • 这篇文章将为大家详细讲解有关C#开发技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#开发技 ... [详细]
author-avatar
_忘却的思念_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有