当前位置: 首页 > 知识库问答 >
问题:

Spark性能优化-执行器的数量与内核的数量

沃博裕
2023-03-14

关于Spark中的性能调优,我有两个问题:

>

  • 我理解在spark作业中控制并行性的一个关键因素是正在处理的RDD中存在的分区的数量,然后控制处理这些分区的执行器和内核。我能假定这是真的吗:

      执行程序的
    • #个*#个执行程序核心的<=#个分区。也就是说,一个分区总是在一个执行器的一个核中处理。执行器核数超过分区数是没有意义的

    我知道每个执行器拥有高数量的内核可能会对HDFS写操作产生影响,但是我的第二个问题是,纯粹从数据处理的角度来看,两者之间有什么区别?例如,如果我有10个节点集群,这两个作业之间的区别是什么(假设每个节点有足够的内存来处理所有事情):

    >

  • 5个执行程序*2个执行程序核心

    假设有无限大的内存和CPU,从性能的角度来看,我们是否应该期望上述两者的性能相同呢?

  • 共有1个答案

    壤驷经国
    2023-03-14

    大多数情况下,使用更大的执行器(更多的内存、更多的内核)会更好。第一:更大的执行器和更大的内存可以很容易地支持广播连接和取消shuffle。第二:由于任务的创建不是相等的,统计上较大的执行者在OOM问题中有更好的生存机会。大型执行程序的唯一问题是GC暂停。G1GC有帮助。

     类似资料:
    • 我试图理解在Yarn上运行Spark作业时,核数和执行器数的关系。 测试环境如下: 数据节点数:3 数据节点计算机规范: CPU:Core i7-4790(内核数:4,线程数:8) RAM:32GB(8GB x 4) HDD:8TB(2TB x 4) 输入数据 类型:单文本文件 大小:165GB 行数:454,568,833 输出 null > 50分钟15秒 55分48秒 31分23秒 有关信息

    • Apache Spark:核心数与执行器数 由于每个案例都不一样,我又问了一个类似的问题。 我正在运行一个cpu密集型的应用程序,具有相同数量的核心和不同的执行器。以下是观察结果。 更新 案例3:执行器-12个,每个执行器的核心数-1个,执行器内存-3个,数据处理量-10 GB,分区-36个,作业持续时间:81分钟

    • 为什么Spark有一个工作节点和四个执行器,每个执行器有一个核心,却无法处理自定义接收器?? 如果执行器在Spark Streaming中有一个单核,那么不通过自定义接收器处理传入数据的原因是什么? 我正在独立模式下运行Spark。我在Spark流媒体应用程序的自定义接收器中获取数据。我的笔记本电脑有4个内核。 master="火花://lappi: 7077" $spark_path/bin/s

    • 问题内容: 如何从Java(或Scala)代码中配置具有和的执行器数量?我经常看到2个执行者。看起来像是行不通的,并且是与众不同的。 我只需要将执行程序的数量设置为等于集群大小,但是总是只有2个。我知道我的集群大小。如果这很重要,我会在YARN上运行。 问题答案: 好的,我知道了。执行程序的数量实际上不是Spark属性本身,而是用于在YARN上放置作业的驱动程序。因此,当我使用SparkSubmi

    • 根据我的研究,每当我们运行spark作业时,我们不应该运行超过5个核的执行器,如果我们增加超过限制的核,作业将会因为糟糕的I/O吞吐量而受损。 我的疑问是,如果我们增加了执行器的数量,减少了内核,即使这些执行器最终会出现在同一个物理机器中,这些执行器会从同一个磁盘读取和写入同一个磁盘,为什么这不会引起I/O吞吐量问题。 我可以考虑Apache Spark:内核数量与执行程序数量的关系 用例以供参考

    • 我提出了一个关于Spark的非常愚蠢的问题,因为我想澄清我的困惑。我对Spark非常陌生,仍在努力理解它在内部是如何工作的。 比方说,如果我有一个输入文件列表(假设1000),我想在某个地方处理或写入,并且我想使用coalesce将我的分区数减少到100。 现在我用12个执行器运行这个作业,每个执行器有5个内核,这意味着它运行时有60个任务。这是否意味着,每个任务将在一个单独的分区上独立工作? 回