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

如何在具有不同内存和核心的集群上调优spark作业

孟绪
2023-03-14

我正在进行一个spark项目,我使用的是一个由3个节点组成的hadoop集群,配置如下:

>

  • 8cores和16go Ram(Namenode、Application Master、nodemanager和spark Master和worker)。
  • 4core和8go Ram(datanode,nodemanager和worker)
  • 4cores和4go Ram(datanode、nodemanager和worker),所以我使用以下配置

    pyspark--主纱--客户端--驱动程序--内存3g--执行器--内存1g--num-执行器3--执行器--核心1

  • 共有1个答案

    冷正青
    2023-03-14

    这本质上归结为您需要处理数据的多少。如果您有整个群集来处理数据,则可以完全使用。

    pyspark--主纱--客户端--驱动程序--内存3g--执行器--内存1g--num-执行器3--执行器--核心1

    这里您没有使用完整的集群。您使用的是3gb驱动程序和1 gb执行程序,其中有3个执行程序,这意味着总共有3gb内存,而集群中有12 gb内存和8个内核。您可以尝试的一种替代配置

    pyspark--主纱--客户端--驱动程序--内存8g--执行器--内存3g--num-执行器4--执行器--核心3

    这使用完整的集群。

    然而,执行器-内存配置主要基于作业需求。您需要通过多次尝试来调整它。您可以检查此文档进行调优。

     类似资料:
    • 参考: Spark独立集群中的工作者、执行者、核心是什么? 火花独立编号执行器/核心控件 如何使用Spark独立集群在辅助节点上管理多个执行器?

    • 问题内容: 问题说明 假设您具有带有Standalone Manager的Spark集群,通过在客户端应用程序中创建作业来调度作业。客户端应用程序在JVM上运行。为了提高性能,您必须使用不同的配置启动每个作业,请参见下面的“ 作业类型”示例 。 问题是您不能从单个JVM创建两个会话。 那么,您如何同时使用不同的会话配置启动多个Spark作业? 通过不同的会话配置,我的意思是: 等等 我的想法 解决

    • 应用程序不是那么占用内存,有两个连接和写数据集到目录。同样的代码在spark-shell上运行没有任何失败。 寻找群集调优或任何配置设置,这将减少执行器被杀死。

    • 问题内容: 我必须设置多少个分片和副本才能使用群集中的每个cpu核心(我希望100%的负载,最快的查询结果)? 我想使用Elasticsearch进行聚合。我读到Elasticsearch使用多个cpu核心,但是没有找到关于cpu核心在分片和副本方面的确切细节。 我的观察是,单个分片在查询时使用的内核/线程不超过1个(考虑到一次仅查询一个)。使用副本时,查询1-shard索引的速度不会更快,因为E

    • 我想使用Spark处理Azure Hd Insight群集中的250gb gzip(filename.json.gzip)文件。但我做不到。 我猜是因为内核、ram和vCPU之间的关系不好,所以我想知道要创建的更好的集群和要发送的Spark配置。 目前我正在使用此实例: 集群E8a v4的6个节点(8核,64 GB RAM) 我的Spark配置是: < li >驱动程序内存:10Gb < li >

    • 正如标题所预期的,我在向docker上运行的spark集群提交spark作业时遇到了一些问题。 我在scala中写了一个非常简单的火花作业,订阅一个kafka服务器,安排一些数据,并将这些数据存储在一个elastichsearch数据库中。 如果我在我的开发环境(Windows/IntelliJ)中从Ide运行spark作业,那么一切都会完美工作。 然后(我一点也不喜欢java),我按照以下说明添