apache-spark - 如何在具有不同内存和核心数量的集群上调整 spark 作业

标签 apache-spark hadoop pyspark

我正在开发一个 spark 项目,我正在使用具有以下配置的 3 个节点的 hadoop 集群:

  • 8cores and 16go of Ram (Namenode, Application Master, nodemanager and spark master and worker).
  • 4cores and 8go of Ram (datanode, nodemanager and worker)
  • Ram的4cores和4go(datanode、nodemanager和worker) 所以我使用以下配置:

    pyspark --master yarn-client --driver-memory 3g --executor-memory 1g --num-executors 3 --executor-cores 1

我使用的所有集群性能的最佳执行器、内存和内核数量是多少?

最佳答案

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

pyspark --master yarn-client --driver-memory 3g --executor-memory 1g --num-executors 3 --executor-cores 1

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

pyspark --master yarn-client --driver-memory 8g --executor-memory 3g --num-executors 4 --executor-cores 3

这使用了完整的集群。

不过,executor-memory的配置主要是根据作业需求来的。您需要通过多次尝试来调整它。你可以查看这个document用于调整。

关于apache-spark - 如何在具有不同内存和核心数量的集群上调整 spark 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49968548/

相关文章:

python-3.x - 如何在pyspark中压缩两列?

hadoop - 在 yarn 集群上安装 spark

scala - 在 Spark 数据集中滚动你自己的 reduceByKey

python - 如何从 AWSCLI 设置 EMR 的 YARN 内存开销

hadoop - Parquet 上的 Spark 与 Hive 上的 Spark(Parquet 格式)

scala - 我如何从 pyspark 访问 couchbase

apache-spark - Spark独立安装无法连接到master

serialization - 无法反序列化 ActorRef 以将结果发送到不同的 Actor

python - python 上的 Hive Server 2 错误与 hiveserver2 连接

sql - 在 Hive 中获取查询输出的模式