我在我的emr集群中使用了3个r4.2x large实例,我的emr集群有8个cpu。我如何确定集群中可用的核心数量。我使用以下命令来确定:
grep cores /proc/cpuinfo
它说我每个CPU有1个核心。
对于spark ETL,最好使用R系列的AWS实例或C系列。上述命令也是确定集群可用内核的正确方法
答案 0 :(得分:1)
EMR群集中的核心数量只是每个核心/任务实例的核心数乘以您正在使用的实例类型的核心数之和。所以在你的情况下它是:
3 instances * 8 cores (per r4.2xlarge) = 24 cores
我认为您对/proc/cpuinfo
的内容感到困惑。如果你在没有使用内核的情况下查看它,你会看到提到的多个处理器。也许请查看:How to obtain the number of CPUs/cores in Linux from the command line?
请记住,这个CPU总和不一定是处理任务的CPU数量,因为这也取决于Hadoop / Spark的配置。
关于实例类型:选择哪种类型取决于您的工作负载。如果内存繁重的工作负载(通常是Spark作业),来自内存繁重R系列的EC2实例可能比来自CPU密集型C系列实例的实例更好。