我正在使用亚马逊的具体星火的EMR集群(版本EMR-4.2.0)maximizeResourceAllocation标志作为记录在这里.根据这些文档,"此选项计算核心节点组中节点上执行程序可用的最大计算和内存资源,并使用此信息设置相应的spark-defaults设置".
我正在使用m3.2xlarge实例为工作节点运行集群.我正在为YARN master使用一个m3.xlarge - 我可以运行它的最小m3实例,因为它没有做太多.
情况是这样的:当我运行Spark作业时,每个执行程序所请求的核心数是8.(我在配置之后才得到这个,"yarn.scheduler.capacity.resource-calculator": "org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"这实际上不在文档中,但我离题了).这似乎是有道理的,因为根据这些文档,m3.2xlarge有8个"vCPU".但是,在实际实例本身中/etc/hadoop/conf/yarn-site.xml,每个节点都配置为yarn.nodemanager.resource.cpu-vcores设置为16.我(猜测)认为这必定是因为超线程或者其他一些硬件的原因.
所以问题在于:当我使用时maximizeResourceAllocation,我获得了亚马逊实例类型具有的"vCPU"数量,这似乎只是YARN在节点上运行的已配置"VCores"数量的一半; 因此,执行程序仅使用实例上实际计算资源的一半.
这是Amazon EMR中的错误吗?其他人是否遇到同样的问题?是否还有其他一些我缺少的魔法无证配置?
我在 EMR(版本 5.32.0)上的 (Py)Spark 中遇到了一些问题。大约一年前,我在 EMR 集群上运行了相同的程序(我认为该版本一定是 5.29.0)。然后我能够spark-submit正确地使用参数配置我的 PySpark 程序。但是,现在我正在运行相同/相似的代码,但spark-submit参数似乎没有任何效果。
我的集群配置:
我使用以下spark-submit参数运行程序:
spark-submit --master yarn --conf "spark.executor.cores=3" --conf "spark.executor.instances=40" --conf "spark.executor.memory=8g" --conf "spark.driver.memory=8g" --conf "spark.driver.maxResultSize=8g" --conf "spark.dynamicAllocation.enabled=false" --conf "spark.default.parallelism=480" update_from_text_context.py
Run Code Online (Sandbox Code Playgroud)
我没有更改集群上的默认配置中的任何内容。
在 Spark UI 的屏幕截图下方,它仅指示 10 个执行程序,而我希望有 40 个执行程序可用...
我尝试了不同的spark-submit参数以确保错误与Apache Spark无关:设置 executor 实例不会更改 executors。我尝试了很多东西,似乎没有任何帮助。
我在这里有点迷茫,有人可以帮忙吗?
更新: 我在 EMR …