gpt4 book ai didi

python - Hadoop headerroom 错误计算

转载 作者:可可西里 更新时间:2023-11-01 14:27:44 26 4
gpt4 key购买 nike

我尝试运行一个 hadoop 应用程序。它只在单节点上运行,但不能在多节点集群上运行。每次应用程序停止前,日志文件都会显示此错误

2015-11-27 14:50:19,513 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Recalculating schedule, headroom=<memory:19456, vCores:-3>
2015-11-27 14:50:19,513 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Reduce slow start threshold not met. completedMapsForReduceSlowstart 1

我搜索了一些解决方案,他们建议在 mapred-site.xml 中设置虚拟内存限制并在 yarn-site.xml 中设置虚拟内存配额所以,我现在的 mapred-site.xml 文件是

<configuration>
<property>
<name>mapreduce.job.tracker</name>
<value>HadoopMaster:5431</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.task.timeout</name>
<value>1800000</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx3072m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx3072m</value>
</property>
</configuration>

而且,我的 yarn-site.xml 文件是:

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>HadoopMaster:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>HadoopMaster:8035</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>HadoopMaster:8050</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>

最佳答案

出现以下错误,因为此作业的可用资源为“空”(表示没有可用资源)。

org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Recalculating schedule, headroom=

当完成的映射器数量少于启动缩减器所需的阈值时,会发生以下错误。该值由配置参数决定:mapred.reduce.slowstart.completed.maps(在 mapred-site.xml 中),默认设置为 .05(意味着,reducer 直到至少 5% 的映射器已完成)。

org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Reduce slow start threshold not met. completedMapsForReduceSlowstart 1

在您的例子中,completedMapsForReduceSlowStart 设置为 1

下面的一段代码决定了这个值:

//check for slow start
if (!getIsReduceStarted()) {//not set yet
int completedMapsForReduceSlowstart = (int)Math.ceil(reduceSlowStart *
totalMaps);
if(completedMaps < completedMapsForReduceSlowstart) {
LOG.info("Reduce slow start threshold not met. " +
"completedMapsForReduceSlowstart " +
completedMapsForReduceSlowstart);
return;

这意味着,至少应该完成 1 个映射器(因为,我猜你的阈值设置为 5%,而你有 20 个映射器,因此 20 的 5% = 1),在 reducer 可以开始之前。

因此,在您的情况下,甚至没有 1 个映射器已完成执行。

这表明,yarn-site.xml 和 mapred-site.xml 中的内存设置存在严重问题。 YARN RM 无法为您的映射器分配任何容器,因此没有一个映射器在运行。

我在下面粘贴了我的内存设置(这对我来说非常有用)。将您的设置与以下设置进行比较,并按比例应用这些设置。例如在我的例子中,(yarn.scheduler.maximum-allocation-mb)/(yarn.scheduler.minimum-allocation-mb) = (9830)/(1228) = 8。

yarn-site.xml

<property> <name>yarn.app.mapreduce.am.resource.mb</name> <value>1228</value> </property>
<property> <name>yarn.app.mapreduce.am.command-opts</name> <value>-Xmx983m</value> </property>
<property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>1228</value> </property>
<property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>9830</value> </property>
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>9830</value> </property>

ma​​pred-site.xml

<property> <name>mapreduce.map.memory.mb</name> <value>1228</value> </property>
<property> <name>mapreduce.reduce.memory.mb</name> <value>1228</value> </property>
<property> <name>mapreduce.map.java.opts</name> <value>-Xmx983m</value> </property>
<property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx983m</value> </property>

另外,请参阅以下有关调整 YARN 配置的博客:

  1. Tuning the Cluster for MapReduce v2 (YARN)
  2. How to Plan and Configure YARN and MapReduce 2 in HDP 2.0

正确设置内存配置后,您应该能够运行作业。

关于python - Hadoop headerroom 错误计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33959923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com