当前位置: 首页 > 知识库问答 >
问题:

AWS EMR-纱线容器

万博涛
2023-03-14

我在AWS EMR Spark上运行一个应用程序。这里,是spark提交作业-

Arguments : spark-submit --deploy-mode cluster --class com.amazon.JavaSparkPi s3://spark-config-test/SWALiveOrderModelSpark-1.0.assembly.jar s3://spark-config-test/2017-08-08

AWS使用纱线进行资源管理。我正在查看指标(下面的屏幕截图),对纱线“容器”指标有疑问。

这里,分配的容器显示为2。但是,我使用了4个节点(3个从1个主节点),所有8个内核CPU。那么,只有2个容器是如何分配的呢?

共有1个答案

金皓君
2023-03-14

您需要做的几件事。首先,您需要在capacity-scheduler.xml中设置以下配置

"yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"

否则YARN将不会使用您指定的所有内核。其次,您需要实际指定您需要的执行程序的数量,以及您需要的内核数量和您希望在执行程序上分配的内存量(也可能在驱动程序上,如果您有许多随机分区或如果您向驱动程序收集数据)。

YARN旨在管理同时运行许多不同作业的集群,因此默认情况下它不会将所有资源分配给单个作业,除非您通过设置上述设置强制它。此外,Spark的默认设置也不足以满足大多数作业,您需要显式设置它们。请阅读这篇博文,以更好地了解如何调整火花设置以获得最佳性能。

 类似资料:
  • 我有几个关于向HDFS提交作业和Hadoop中的YARN架构的问题: 所以我的问题是在HDFS中纱线的组成部分是如何协同工作的:? 因此,YARN由NodeManager和Resource Manager组成。在这两个组件中:NodeManager是否运行在每个DataNode上,而ResourceManager是否运行在每个集群的每个NameNode上?因此,当任务跟踪器(在每个DataNode

  • 我正在从我的开发机器上启动spark-submit。 根据在YARN文档上运行Spark,我应该在env var或上为hadoop集群配置提供一个路径。这就是它变得棘手的地方:如果我将任务发送到远程YARN服务,为什么这些文件夹必须存在于我的本地机器上?这是否意味着spark-submit必须位于集群内部,因此我不能远程启动spark任务?如果没有,我应该用什么填充这些文件夹?我应该从任务管理器服

  • 根据[Spark on YARN resource Manager:YARN容器和Spark Executors之间的关系,YARN容器的数量应该等于Spark应用程序的num-executors。然而,我在运行中确实看到Spark-UI environment选项卡中显示的num-executors是60个,但YARN中显示的容器数量只有37个。我使用的是Spark2.2,而Spark.Dyna

  • 我想创建一个test React应用程序,但我在安装时遇到了困难:我使用npm安装了Thread,因为Thread msi没有启动,所以: 我读了这个错误消息: 纱线产生v0。15.1错误:找不到包。C:\Users***\React中的json(或bower.json)文件位于C:\Users***\AppData\Roaming\npm\node\u modules\yarnpkg\lib\c

  • 我正在使用spark submit执行以下命令: spark submit script\u测试。py—主纱线—部署模式群集spark submit script\u测试。py—主纱线簇—部署模式簇 这工作做得很好。我可以在Spark History Server UI下看到它。但是,我无法在RessourceManager UI(纱线)下看到它。 我感觉我的作业没有发送到集群,但它只在一个节点上

  • 无论我如何修改中的设置,即使用以下所有选项 我只是仍然无法让我的应用程序即Spark利用集群上的所有内核。火花执行器似乎正确地占用了所有可用内存,但每个执行器只保留一个内核,仅此而已。 以下是spark defaults中配置的选项。形态 请注意,