0

堆栈交换和 Giraph 的新手,因此请忽略错误并提出任何澄清问题。

操作系统:ubuntu 13.10

Hadoop/Yarn:hadoop-2.2.0/(2 节点集群)

Giraph:1.0.0(编辑:主干)

当我尝试运行以下示例时,我收到了 NullPointerException (NPE):

$ hadoop jar $GIRAPH_HOME/giraph-examples/target/giraph-examples-1.1.0-SNAPSHOT-for-hadoop-2.2.0-jar-with-dependencies.jar org.apache.giraph.GiraphRunner org.apache.giraph。 examples.SimpleShortestPathsComputation -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/hduser/rrdata/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/hduser/rrdata/输出/tiny_graph.out -w 1

堆栈跟踪:

org.apache.giraph.yarn.GiraphYarnClient.checkJobLocalZooKeeperSupported(GiraphYarnClient.java:460) 处 org.apache.giraph.yarn.GiraphYarnClient.run(GiraphYarnClient.java:116) 处的线程“主”java.lang.NullPointerException 中的异常org.apache.giraph.GiraphRunner.run(GiraphRunner.java:96) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.hadoop.util.ToolRunner.run(ToolRunner. java:84) 在 org.apache.giraph.GiraphRunner.main(GiraphRunner.java:126) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun org.apache.hadoop.util 中的 java.lang.reflect.Method.invoke(Method.java:606) 中的 .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)。RunJar.main(RunJar.java:212)

似乎与动物园管理员有关。我安装了 zookeeper,但在配置错误之前没有使用它。我已经尝试过-Dgiraph.zkList=hostname:port相关选项,但得到“无法识别的选项”异常。

为这种情况寻找正确的 zookeeper 设置。如果我弄清楚了,我会发布回复。

4

2 回答 2

1

这是一个如何指定 -D 标志的示例:

hadoop jar giraph-examples-1.1.0-SNAPSHOT-for-hadoop-2.2-jar-with-dependencies.jar    org.apache.giraph.GiraphRunner -D giraph.zkList="zkNode.net:2081"  org.apache.giraph.examples.SimpleShortestPathsComputation  -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/rav/giraph/input/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/rav/giraph/output/shortestpaths -w 1

顺便说一句,Giraph 尚不支持本地 Zookeeper(GiraphYarnClient):

  /**
  * Check if the job's configuration is for a local run. These can all be
  * removed as we expand the functionality of the "pure YARN" Giraph profile.
  */
  private void checkJobLocalZooKeeperSupported() {
     final boolean isZkExternal = giraphConf.isZookeeperExternal();
     final String checkZkList = giraphConf.getZookeeperList();
     if (!isZkExternal || checkZkList.isEmpty()) {
        throw new IllegalArgumentException("Giraph on YARN does not currently" +
            "support Giraph-managed ZK instances: use a standalone ZooKeeper.");
     }
  }

不幸的是 checkZkList 是 NULL 所以你永远不会看到这个异常:)

于 2013-11-27T02:53:13.683 回答
1

NPE 的原因可能是缺少用于检查 ZK 设置的 giraphConf。我认为这是由于运行中的早期问题造成的。看起来示例 jar 没有使用 -yj 参数提供。您使用“hadoop jar”运行的 jar 通常是 giraph-core 本身。

祝你好运,如果您有更多问题,请在 Giraph 用户列表上发布。

于 2013-12-08T18:17:27.320 回答