我在5节点集群上使用Hadoop 2.5.2运行Giraph . 但是当我尝试运行SimpleShortestPathsComputation示例时,我收到此错误:
线程“main”中的异常java.lang.IllegalStateException:Giraph的估计集群堆2000MB ask大于当前可用的0MB集群堆 . 中止工作 .
到目前为止,我一直无法确定为什么Giraph认为集群有0MB堆 . 我分别在yarn-env.sh和hadoop-env.sh中设置了YARN_HEAPSIZE和HADOOP_HEAPSIZE,在yarn-site.xml中我有:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8960</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
知道这是怎么回事吗?
1 回答
这结果是一个环境问题 . 基本上,会发生这样的事情:Giraph向YARN ResourceManager询问运行节点的列表,并总结列出的节点中可用的堆,然后将其与它自己对所需堆的估计值进行比较 . 在我的情况下,我的设置中的一个小故障导致YARN无法列出任何节点,因此Giraph认为群集可以使用0MB的堆 .
潜在的问题是双重的:
我在EC2上运行并忘记将端口8032添加到安全组,因此节点可以连接到资源管理器 .
我忘了设置yarn resourcemanager hostname属性,因此节点最初尝试连接到0.0.0.0 .
一旦解决了这两个问题,这个问题就消失了 .