我正在开发一个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 回答
这基本上归结为您需要处理数据的程度 . 如果您有整个集群来处理数据,则可以完全使用 .
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进行调整 .
This Sandy Ryza的博客文章很好地解释了各种管理资源的分配,here是一个方便的Excel备忘单 .
但是,如果您是Spark新手和/或经常更改群集大小/类型,我可以建议启用dynamic allocation吗?