我有一个YARN集群和集群中的几十个节点。我的程序只能用地图。它的Avro输入非常小,只有几百万行,但是处理一行需要大量的CPU功率。我观察到的是,许多地图任务在单个节点上运行,而其他节点没有参与。这将导致一些节点非常慢,并影响HDFS的整体性能。我认为这种行为是因为Hadoop的数据局部性。
我很好奇是否有可能关闭它,或者是否有另一种方法来强制YARN跨集群更均匀地分配映射任务?
谢谢!
假设您无法轻松地在整个集群中更均匀地重新分布数据(当然不是所有数据都在一个节点上,对吧?!)这似乎是放松局部性的简单方法:
yarn.scheduler.capacity.node-locality-delay
这个设置应该有一个默认的40,尝试将其设置为1,看看这是否有预期的效果。也许0也可以