我有一个包含5个节点的Hadoop集群,每个节点有12个核心,内存为32GB。我使用YARN作为MapReduce框架,因此我对YARN有以下设置:
然后,我的YARN cluster页面(http://myhost:8088/cluster/apps)上显示的群集度量值显示vCores Total为40。这挺好的!
然后我在上面安装了Spark,并在yarn-client模式下使用spark-shell。
我使用以下配置运行了一个Spark作业:
我将--executor-cores设置为10,--num-executors设置为4,因此逻辑上,应该总共使用了40个Vcores。但是,当我在Spark作业开始运行后检查相同的纱线群集页面时,只有4个vCore,4个Vcores总计
我还发现capacity-scheduler.xml
中有一个参数--名为yarn.scheduler.capacity.resource-calculator
:
“要用于比较计划程序中的资源的ResourceCalculator实现。默认值(即DefaultResourceCalculator仅使用内存,而DominantResourceCalculator使用dominant-resource来比较多维资源,如内存、CPU等)。”
然后我将该值更改为DominantResourceCalculator
。
但是当我重新启动YARN并运行相同的Spark应用程序时,我仍然得到了相同的结果,比如说集群度量仍然告诉我们使用的VCores是4!我还用htop命令检查了每个节点上的CPU和内存使用情况,我发现没有一个节点的10个CPU核都被完全占用。原因会是什么呢?
我还尝试以细粒度的方式运行相同的Spark作业,例如使用--num executors40--executor-cores1
,以这种方式,我再次检查了每个工作节点上的CPU状态,并且所有CPU核都已被完全占用。
我也想知道同样的问题,但更改资源计算器对我有用。
这是我设置属性的方式:
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
在应用程序的YARN UI中检查分配了多少个容器和vcore,改变后容器的数量应该是executors+1,而vcores应该是:(executor-cores*num-executors)+1。
根据[Spark on YARN resource Manager:YARN容器和Spark Executors之间的关系,YARN容器的数量应该等于Spark应用程序的num-executors。然而,我在运行中确实看到Spark-UI environment选项卡中显示的num-executors是60个,但YARN中显示的容器数量只有37个。我使用的是Spark2.2,而Spark.Dyna
我在Google DataProc集群上运行spark作业。但Spark似乎没有使用集群中所有可用的vCore,如下所示 基于这样和这样的其他一些问题,我已经设置了集群以使用来考虑资源分配的vcpus和内存 但当我提交带有自定义spark标志的作业时,看起来YARN不尊重这些自定义参数,默认使用内存作为资源计算的标准 能帮助某人弄清楚这里发生了什么?
问题内容: 我有tyo字节变量 如果我将它们求和,则求和的值为整数。 为什么a + b是int? 问题答案: 因为Java语言规范这么说 对操作数(第5.6.2节)执行二进制数值提升。 请注意,二进制数值升级执行值集转换(第5.1.13节),并且可能执行拆箱转换(第5.1.8节)。 数字操作数上加法表达式的类型是其操作数的提升类型。 并且,关于数字促销, 扩展原语转换(第5.1.2节)适用于转换以
我想创建一个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
从评论来看: 有人能解释一下它是如何有效的吗?仅仅是它避免拳击的事实就足够了吗?
假设我有一个包含1个主节点、3个核心节点和5个任务节点的集群。如果我在纱线集群模式下运行spark作业,驱动程序将在主节点上运行(主节点是否也可以运行executor?),每个容器可以有X个执行者。我是否有3个5=8个容器?或者仅仅3个容器,因为只有核心节点可以存储数据? 此外,如果我有两个火花作业同时运行,我是每个节点得到2个独立的容器,每个火花作业1个,还是2个火花作业的执行者每个节点共享1个