0

我在 5 节点集群上使用 Hadoop 2.5.2 运行 Giraph。但是当我尝试运行 SimpleShortestPathsComputation 示例时,我得到了这个错误:

线程“main”java.lang.IllegalStateException 中的异常:Giraph 的估计集群堆 2000MB 请求大于当前可用的集群堆 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>

知道这是怎么回事吗?

4

1 回答 1

0

结果证明这是一个环境问题。基本上,发生的情况是这样的:Giraph 向 YARN ResourceManager 询问正在运行的节点列表,并总结列出的节点中可用的堆,然后将其与它自己估计的需要多少堆进行比较。就我而言,我的设置中的一个小故障导致 YARN 无法列出任何节点,因此 Giraph 认为集群可以使用 0MB 的堆。

潜在的问题有两个:

  1. 我在 EC2 上运行并忘记将端口 8032 添加到安全组,因此节点可以连接到资源管理器。
  2. 我忘记设置纱线资源管理器主机名属性,因此节点最初试图连接到 0.0.0.0。

解决了这两个问题后,这个问题就消失了。

于 2015-03-11T03:18:42.970 回答