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

时间:2018-04-22 17:05:48

标签: apache-spark hadoop pyspark

我正在开展一个火花项目,并且我正在使用具有以下配置的3个节点的hadoop集群:

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

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

执行器,内存和内核的最佳使用量是什么?我的集群性能是什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

这使用完整的群集。

但是,执行程序内存配置主要基于作业要求。您需要多次尝试调整它。您可以查看此document进行调整。

答案 1 :(得分:0)

Sandy Ryza撰写的

This博客文章很好地解释了各种开销的资源分配问题,here是一个方便的Excel备忘单。

但是,如果您是Spark新手和/或经常更改群集大小/类型,我是否可以建议启用dynamic allocation