当你选择一个性能更高的节点,比如r3.xlarge
vs m3.xlarge
时,Spark会自动利用其他资源吗?或者这是你需要手动配置和调整的东西吗?
就配置而言,哪些是要调整以最大限度地利用群集的配置值?
答案 0 :(得分:0)
它会尝试..
AWS具有您可以在EMR群集配置中启用的设置,该设置将尝试执行此操作。它被称为 spark.dynamicAllocation.enabled 。在过去,这种设置存在问题,它会为Spark提供太多资源。在较新的版本中,他们降低了他们给予火花的数量。但是,如果您使用Pyspark,则不会考虑python的资源要求。
我通常会禁用dynamicAllocation,并根据选择的实例类型从我自己的代码中动态设置相应的内存和核心设置。
此页面讨论了他们将为您选择的默认值: http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-spark-configure.html
如果您手动执行此操作,则至少需要设置:
spark.executor.memory
spark.executor.cores
此外,您可能需要使用以下方法调整纱线容器尺寸限制:
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.minimum-allocation-mb
yarn.nodemanager.resource.memory-mb
如果您使用的是Pyspark,请确保为操作系统留下核心和一些RAM,为python留下RAM。