首页 文章

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

提问于
浏览
0

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

  • 8cores and 16go of Ram (Namenode,Application Master,nodemanager和spark master和worker) .

  • 4cores and 8go of Ram (datanode,nodemanager和worker)

  • 4cores and 4go of Ram (datanode,nodemanager和worker)所以我使用以下配置:

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

什么是最好的执行程序,内存和核心数量使用我的集群性能?

2 回答

  • 0

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

    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进行调整 .

  • 0

    This Sandy Ryza的博客文章很好地解释了各种管理资源的分配,here是一个方便的Excel备忘单 .

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

相关问题