首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果总核数保持一致,如何选择executor个数和每个executor核个数?

在云计算中,如果总核数保持一致,选择executor个数和每个executor核个数是根据任务的性质和资源的可用性来决定的。

首先,executor是Spark框架中的一个概念,用于执行任务。executor个数和每个executor核个数的选择会影响任务的执行效率和资源利用率。

  1. executor个数的选择:
    • 对于大规模数据处理任务,可以选择较多的executor个数,以便并行处理数据,提高任务的执行速度。
    • 对于小规模数据处理任务,可以选择较少的executor个数,以避免资源浪费和任务调度的开销。
  • 每个executor核个数的选择:
    • 对于计算密集型任务,可以选择较大的每个executor核个数,以充分利用计算资源,提高任务的执行速度。
    • 对于I/O密集型任务,可以选择较小的每个executor核个数,以便更好地利用I/O资源,提高任务的执行效率。

总的来说,选择executor个数和每个executor核个数时需要综合考虑任务的性质和资源的可用性。在实际应用中,可以通过实验和性能测试来确定最佳的配置参数。

腾讯云提供了弹性MapReduce(EMR)服务,可以灵活配置executor个数和每个executor核个数,以满足不同任务的需求。具体产品介绍和配置方式可以参考腾讯云EMR的官方文档:腾讯云弹性MapReduce(EMR)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

工作常用之Spark调优【二】资源调优

先设定单个 Executor ,根据 Yarn 配置得出每个节点最多的 Executor 数量,每个节 点的 yarn 内存 / 每个节点数量 = 单个节点的数量 的...2 、具体提交参数 1 ) executor-cores 每个 executor 的最大。根据经验实践,设定在 3~6 之间比较合理。... / 每个 executor 的最大 cpu 考虑到系统基础服务 HDFS 等组件的余量, yarn.nodemanager.resource.cpu-vcores...2.1.2 内存估算 ➢ 估算 Other 内存 = 自定义数据结构 * 每个 Executor ➢ 估算 Storage 内存 = 广播变量 + cache.../Executor 数量 ➢ 估算 Executor 内存 = 每个 Executor * (数据集大小 / 并行度) 2.1.3 调整内存配置项 一般情况下

54721

工作常用之Spark调优[二】资源调优

先设定单个 Executor ,根据 Yarn 配置得出每个节点最多的 Executor 数量,每个节 点的 yarn 内存 / 每个节点数量 = 单个节点的数量 的...2 、具体提交参数 1 ) executor-cores 每个 executor 的最大。根据经验实践,设定在 3~6 之间比较合理。... / 每个 executor 的最大 cpu 考虑到系统基础服务 HDFS 等组件的余量, yarn.nodemanager.resource.cpu-vcores...2.1.2 内存估算 ➢ 估算 Other 内存 = 自定义数据结构 * 每个 Executor ➢ 估算 Storage 内存 = 广播变量 + cache.../Executor 数量 ➢ 估算 Executor 内存 = 每个 Executor * (数据集大小 / 并行度) 2.1.3 调整内存配置项 一般情况下

75320
  • 图文详解 Spark 总体架构

    其中, spark.cores.max 是指你的spark程序需要的, spark.executor.cores 是指每个executor需要的....或者 spark.executor.memory), 每个executor使用的cpu(-executor-cores 或者 spark.executor.cores), 每个task执行使用的core...例子:集群有12个节点运行Yarn的NodeManager,每个节点有64G内存32的cpu每个节点可以启动2个executor每个executor的使用26G内存,剩下的内用系统别的服务使用...上的文件每个数据块会生成一个InputSplit,每个数据块大小为64mb128mb,因为HDFS上面的数据的块边界是按字节来算的(64mb一个块),但是当数据被处理是,它又要按记录进行切分,对于文本文件来说切分的字符就是换行符...也就是说,默认Executor 60%的内存,可以用来保存持久化的RDD数据。根据你选择的不同的持久化策略,如果内存不够时,可能数据就不会持久化,或者数据会写入磁盘。

    1.7K10

    Spark 源码(8) - Master分配资源并在Worker上启动Executor ,逐行代码注释版

    app 需要的小于一个 Executor 可以提供的,就不为 app 分配新的 Executor; 过滤出还有可供调度的 cpu memory 的 workers,并按照 cores 的大小降序排序...app 还需要的 cpu 大于每个执行器的,才继续分配。...)被显示设置的时候,如果这个 worker 上有足够的内存的话,那么每个 worker 上可以执行多个执行器;反之,没有设置的时候,每个 worker 上只能启动一个执行器;并且,这个执行器会使用...能提供的 cpu如果显示设置了,那么每个 Worker 可以启动多个 Executor; 下面是源码,每句都有挨个注释过,中间有一个方法是判断这个 Worker 上还能不能再分配 Executor...executor val coresPerExecutor = app.desc.coresPerExecutor // 每个 executor 的最小

    65530

    戳破 | hive on spark 调优点

    本文主要是想讲hive on spark 在运行于yarn模式的情况下如何调优。 下文举例讲解的yarn节点机器配置,假设有32,120GB内存。...spark.executor.cores=4,由于总共有28个,那么最大可以申请的executor是7。内存处以7,也即是 100/7,可以得到每个executor约14GB内存。...那么最终 spark.executor.memoryOverhead=2 G spark.executor.memory=12 G 根据上面的配置的化,每个主机就可以申请7个executor每个executor...所以要结合资源和数据量进行适当缩减增加。 3. executor executor的数目是由每个节点运行的executor数目集群的节点数共同决定。...如果你有四十个节点,那么hive可以使用的最大executor就是 280(40*7). 最大数目可能比这个小点,因为driver也会消耗1core12GB。 当前假设是没有yarn应用在跑。

    1.8K30

    线上Storm的worker,executor,task参数调优篇

    worker设置为20;另外一个数据量大的设置worker为40;相当于等于线上机器的CPU;(注意:我的storm ui上的slots总数为160,但是我没有把worker设置的更大,我的考虑是如果设置大于...CPU,有可能反而会影响其性能,所以最终设置每个拓扑中的worker最大不超过40,此处不一定设置大于40要不好,有了解的可以留言讨论一下);  ?...将超时时间由原来的30扩大到600;最大的spout缓存设置为1000*spout=20000;ack的设置为20(ack的个数要保持与worker一样,因为每个worker会创建一个executor...Acker任务默认是每个worker进程启动一个executor线程来执行,,可以在topology中取消acker任务,这样的话就不会多出来一个executor任务了。...的线程比task数量多的话也只能分配task数量相等的executor

    1.6K21

    Spark Day06:Spark Core之Spark 内核调度SparkSQL快速入门

    Executor中存储一份;如果没有对变量进行广播的话,每个Task中存储一份。...,如果设置了值,是在shuffle的过程才会起作用 在实际项目中,运行某个Spark Application应用时,需要设置资源,尤其Executor个数CPU如何计算?...首先确定的CPU Core,依据数据量(原始数据大小)及考虑业务分析中数据量 再确定Executor个数,假定每个Executor,获取个数 最后确定Executor内存大小,一般情况下,每个...Executor内存往往是CPU2-3倍 分析网站日志数据:20GB,存储在HDFS上,160Block,从HDFS读取数据, RDD 分区数目:160 个分区 1、RDD分区数目160,那么...Task数目为160个 2、CPU Core 160/2 = 80 CPU Core = 60 160/3 = 50 3、假设每个Executor:6 Core 60 /

    83020

    Spark Core 整体介绍

    核心概念 1. num-executor优化 –num-executors: 执行器个数,执行器可以为节点个数,也可以为(单节点*节点数),也可以是介于俩者之间(用于调优) –executor-cores...: 执行器, 可以1,也可以为单节点的内核书,也可以是介于俩者之间(用于调优) –executor-memory: 执行器内存, 可以为最小内存(单节点内存总数/单节点),也可以为最大内存...(单节点内存总数),也可以是介于俩者之间(用于调优) 使用较小的executors 较小,内核较小 使用较大的executors 较大,内核较大 使用优化的executors 合适,内核合适...spark在具体任务的调度中,的分两路进行:Stage级别调度Task级别调度。...5、如果Executor端用到了Driver的变量,如果使用广播变量在每个Executor中只有一份Driver端的变量副本。

    38110

    并发编程之线程池

    如果队列选择了有界队列,那么任务超过了队列大小时,会创建maximumPoolSize - corePoolSize 数目的线程来救急。...,需要结束节省资源,这个时间由keepAliveTimeunit来控制。...适合任务比较密集,但每个任务执行时间较短的情况 5)newSingleThreadExecutor ? 使用场景 : 希望多个任务排队执行。...区别 : 自己创建一个单线程串行执行任务,如果任务执行失败而终止那么没有任务补救措施,而线程池还会新建一个线程,保证池的正常工作 Executors.newSingleThreadExecutor()线程个数始终为...经验公式如下 线程 = * 期望 CPU 利用率 * 时间(CPU计算时间 + 等待时间)/ CPU 计算时间 例如4CPU计算时间是50%,其它等待时间是50%,期望cpu被100%利用

    51310

    Spark on Yarn资源配置

    总共6个节点,每个节点的物理内存为16G、物理core个数为4个,考虑到要给其他应用或者系统进程预留一些资源,所以我设置yarn集群的每个节点使用12GB物理内存8个虚拟核。...这里有虚拟核的概念,我个人的理解是,yarn集群默认可以使用集群中的全部物理每个节点有4个物理,而我配置每个NodeManager节点可以使用8个虚拟核,这就说明在我的集群上,一个物理=两个虚拟核...=6 \ # 启动Executor个数 ....ApplicationMaster使用2个vocre,启动了6个Executor每个使用4个vcore,所以总共使用的vcore是:2 + 6 * 4 = 26 一共使用了13G内存,其中ApplicationMaster...通用): spark.executor.cores或者--executor-cores (7) 设置启动 Executor个数(ClientCluster通用): spark.executor.instances

    2.3K60

    对比MPP计算框架批处理计算框架

    executor有独立的cpu、内存磁盘等资源,每个executor一般不能访问其他executor的资源。...所谓有效,就是说这些查询可以在用户可以接受的查询时间内返回,如果并发查询很高,但是每个查询都需要等几个小时,那就不叫有效查询了)。...如果并发数上升到20以上,吞吐就会下降到最大吞吐的70%(这里吞吐量是这样定义的:相同类型(比如都是groupby,或者都是join查询)的查询在固定时间段内完成执行的个数)。...举例来说明,HDFS上运行的MapReduce任务,task等于的split(split要处理的HDFS文件的Block总数相同)。...:在spark或者mr中,task是分批执行的,能并行执行的task由配置的cpu决定,所以执行快的节点被分配要执行的task较多,需要分多个批次才能处理完,而执行快的节点分配的task少,一个批次就执行完

    2.3K110

    【Spark篇】---Spark中资源任务调度源码分析与资源配置参数应用

    中去执行,所以如果逻辑需要依赖第三方jar包 比如oreacl的包时 这里用--jars添加) --files 用逗号隔开的文件列表,会放置在每个executor工作目录中 --conf spark的配置属性...executor使用的,仅限于SparkStandalone、Spark on Mesos模式 Spark standalone and YARN only: --executor-cores...每个executor使用的core,Spark on Yarn默认为1,standalone默认为worker上所有可用的core。...如果想在Worker上启动多个Executor,提交Application的时候要加--executor-cores这个选项。...也可以使用spark-shell            2.1、默认情况每个worker为当前的Application启动一个Executor,这个Executor使用集群中所有的cores1G内存。

    1.2K30

    python3使用concurrent执行多进程任务

    理论上来说,如果有n个cpu,我们就可以实现n倍的加速。但是大部分情况下会受限于算法或者任务本身,跟n倍的加速之间有一定的gap。...我们本地的电脑上有4个物理每个物理核实际上对应于2个逻辑,因此一共是有8个逻辑。也就是说,理论上我们最大可以加速8倍的算法执行时间。...比如在本用例中,如果算法分配的结果就是需要17个子算法来进行实现,那么在每个逻辑上面执行了2次的休眠任务之后,又有一个逻辑需要再执行1次休眠任务,而此时其他的逻辑都需要等待这个执行任务的逻辑的任务结束...这里我们没有配置max_worker的情况下,会按照系统中最高的逻辑数来进行多进程的任务分配,但是在实际场景中我们需要考虑多种因素的限制,如内存进程的均衡配置(在大内存任务中,如果进程全开,有可能导致内存不足的问题...在下面的代码中我们将给出如何配置执行任务的的方案: # concurrent_sleep.py import concurrent.futures import time import sys

    89320

    数据预处理速度高倍提升,3行python代码简单搞定!

    而大多数当代机器学习硬件都至少搭载了双处理器。这意味着如果没有进行优化,在数据预处理的时候会出现「一有难九围观」的情况——超过 50% 的算力都会被浪费。...在当前四处理器(英特尔酷睿 i5) 6 处理器(英特尔酷睿 i7)大行其道的时候,这种情况会变得更加明显。 ?...使用 for 循环逐个处理每个数据,然后在每个循环迭代上运行预处理。...实际处理代码如下: executor.map(load_and_resize, image_files) 「executor.map()」将你想要运行的函数列表作为输入,列表中的每个元素都是我们函数的单个输入...如果你有一个数据列表要处理,而且在每个数据点上执行相似的运算,那么使用 Python 并行池是一个很好的选择。但有时这不是最佳解决方案。并行池处理的数据不会在任何可预测的顺序中进行处理。

    60220

    大数据平台:计算资源优化技术&作业诊断

    资源调度器中,每个队列可以设置一个最小最大资源量,在极端情况下,最小资源量是每个队列需要保证的资源量,最大资源量是不能超过的资源量。...mapsCompleted Mapper阶段完成数 reducesTotal MapReduce作业Reducer阶段个数 reducesCompleted Reducer阶段完成数 uberized...:ms) MILLIS_MAPS 所有Map任务的总耗时(单位:ms) MILLIS_REDUCES 所有Reduce任务的总耗时(单位:ms) VCORES_MILLIS_MAPS 所有Map任务的消耗...(单位:vcore-ms) VCORES_MILLIS_REDUCES 所有Reduce任务的消耗(单位:vcore-ms) MB_MILLIS_MAPS 所有Map任务的内存消耗(单位:mb-ms...diskUsed Executor过程中RDD持久化到磁盘的空间大小 totalCores Executor使用 maxTasks 最大的Task数量 totalDuration Executor

    55896

    三行Python代码,让数据预处理速度提高2到6倍

    而大多数当代机器学习硬件都至少搭载了双处理器。这意味着如果没有进行优化,在数据预处理的时候会出现「一有难九围观」的情况——超过 50% 的算力都会被浪费。...在当前四处理器(英特尔酷睿 i5) 6 处理器(英特尔酷睿 i7)大行其道的时候,这种情况会变得更加明显。 ?...使用 for 循环逐个处理每个数据,然后在每个循环迭代上运行预处理。...实际处理代码如下: executor.map(load_and_resize, image_files) 「executor.map()」将你想要运行的函数列表作为输入,列表中的每个元素都是我们函数的单个输入...如果你有一个数据列表要处理,而且在每个数据点上执行相似的运算,那么使用 Python 并行池是一个很好的选择。但有时这不是最佳解决方案。并行池处理的数据不会在任何可预测的顺序中进行处理。

    1.3K40

    spark系列——Executor启动过程分析

    ,轮询可用的work 分配给 Executor 所需的 CPU ,即你指定的--executor-cores , 以及内存,即你指定的--executor-memory, 如果 spark.deploy.spreadOut...在某一集群中有4 个 Worker 节点,每个节点拥有16个 CPU , 其中设置了 spark.cores.max = 48 spark.executor.cores = 16, 如果...spark.deploy.spreadOut = true,按照每次分配 1 个CPU , 则每个 Worker 节点的 Executor 将分配到 12 个 CPU , 就达到了应用限制的最大...而在后续版本中,每次分配 CPU Executor 指定的 CPU 如果没有指定默认情况为1,这样在前面的例子中, 按照该分配方式将在3 个 Worker 节点中的 Executor...分配16个 CPU , 这样就能够正常启动 Executor

    77411

    spark-submit 参数设置

    executor-cores每个executor使用的内核,默认为1num-executors启动executor的数量,默认为2executor-memoryexecutor的内存大小,默认为1Gdriver-coresdriver...使用的内核,默认为1driver-memorydriver的内存大小,默认为1Gqueue指定了放在哪个队列里执行spark.default.parallelism该参数用于设置每个stage的默认task...也就是说,默认Executor 60%的内存,可以用来保存持久化的RDD数据。根据你选择的不同的持久化策略,如果内存不够时,可能数据就不会持久化,或者数据会写入磁盘。...total-executor-cores所有executor (1)executor_cores*num_executors       表示的是能够并行执行Task的数目不宜太小或太大!...(4)driver-memory       driver 不做任何计算存储,只是下发任务与yarn资源管理器task交互,除非你是 spark-shell,否则一般 1-2g (5)如果需要对

    70250
    领券