更改GCP DataProc群集的调度程序属性

问题描述 投票:2回答:1

[当我运行使用Dataproc Cluster Web界面的Jupyter Notebook创建的PySpark代码时,我发现正在运行的代码并没有使用主节点或工作节点中的所有资源。它仅使用其中的一部分。我在这里回答“将调度程序属性更改为FIFO”时找到了解决此问题的方法。

我在这里有两个问题:1)如何更改计划程序属性?2)除了更改Scheduler属性以外,是否还有其他方法可以使PySpark使用所有资源?

预先感谢

google-app-engine google-cloud-platform google-cloud-dataproc
1个回答
1
投票
Some properties you may want to consider

[spark.executor.cores-每个执行程序的CPU线程数。

    [spark.executor.memory-为每个执行程序分配的内存量。
  • spark.dynamicAllocation.enabled=true-启用动态分配。这样,Spark执行者的数量就可以根据工作需求进行扩展。
  • spark.default.parallelism-配置作业的默认并行度。除了存储分区方案之外,此属性是为给定作业正确设置的最重要属性。
  • spark.sql.shuffle.partitions-与spark.default.parallelism相似,但用于Spark SQL聚合操作。
  • [请注意,除了spark.default.parallelismspark.sql.shuffle.partitions,您极有可能不想触摸以上任何内容(除非您在代码中设置了显式的RDD分区计数)。配置YARN和Dataproc上的Spark,以便(如果没有其他作业在运行)给定的Spark作业将占用所有工作线程核心和(大部分)工作内存。 (某些内存仍保留用于系统资源。)
  • 如果您已经将spark.default.parallelism设置得足够高,并且集群利用率仍然很低,那么您的工作可能不够大,无法使用这些资源

    或您的输入数据集不能充分分割。

    请注意,如果您使用HDFS或GCS(Google云存储)进行数据存储,则默认块大小分别为64 MiB或128 MiB。输入数据不会超出块大小,因此您的初始并行度(分区计数)将限制为data_size / block_size。没有更多的执行者核心而不是分区是没有意义的,因为那些多余的执行者将无事可做。

  • © www.soinside.com 2019 - 2024. All rights reserved.