【问题标题】:zookeeper configs for Giraph 1.0 on Hadoop 2.2.0Hadoop 2.2.0 上 Giraph 1.0 的 zookeeper 配置
【发布时间】:2013-11-20 22:16:02
【问题描述】:

堆栈交换和 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/output/tiny_graph.out -w 1

堆栈跟踪:

线程“main”中的异常 java.lang.NullPointerException at org.apache.giraph.yarn.GiraphYarnClient.checkJobLocalZooKeeperSupported(GiraphYarnClient.java:460) 在 org.apache.giraph.yarn.GiraphYarnClient.run(GiraphYarnClient.java:116) 在 org.apache.giraph.GiraphRunner.run(GiraphRunner.java:96) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 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.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:212)

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

为此场景寻找正确的 zookeeper 设置。如果我知道了,我会发布回复。

【问题讨论】:

  • 你确定你运行的是 1.0 而不是trunk?
  • 最初,我从 'apache.claz.org/giraph/giraph-1.0.0/' 下载了 1.0.0;但切换到 github 'github.com/apache/giraph.git';因为缺少源并且没有打包 hadoop2.0.0 二进制文件。是映射到后备箱的吗?我是 github 新手,还没有看过分支。
  • 我刚刚检查过,你是对的,我在后备箱上。这对上述问题有什么改变吗?

标签: apache-zookeeper hadoop-yarn giraph


【解决方案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 所以你永远不会看到这个异常:)

【讨论】:

  • 非常感谢!我尝试了一些变体,但找不到将外部动物园管理员准确指定为 giraph 的文档。此问题已解决,但现在遇到另一个异常。
  • 顺便说一句,您知道如何在配置文件中而不是在命令行中指定它吗?
  • 我不确定如何在 conf 文件中进行设置。您现在遇到的另一个异常是什么?
  • 这是因为您的worker无法连接到Zookeeper服务器,那是因为您没有将zookeeper主机名和端口替换为您的服务器信息!另外——如果你看一下容器的日志就很清楚了。使用:yarn logs -applicationId 。你能告诉我如何在 apache 邮件列表上重播你的电子邮件吗?
【解决方案2】:

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

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

【讨论】:

  • 是的,ravwojdyla 帮了忙。我遇到了其他问题并继续处理其他紧迫项目,但会尝试您和其他人在用户列表中提供的建议。目前正在评估 Jung,但由于规模原因,宁愿使用 Giraph。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 2017-08-27
  • 2014-08-28
  • 2016-02-17
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多