Hadoop 1.2.1 クラスターに giraph ジョブを送信しています。ジョブは次のスタック トレースで失敗しています。
2017-04-21 20:37:41,082 ERROR org.apache.hadoop.mapred.Child: Error running child : java.lang.NoSuchMethodError: com.google.common.io.Closeables.closeQuietly(Ljava/io/Closeable;)V
at org.apache.giraph.zk.ZooKeeperManager.generateZooKeeperConfigFile(ZooKeeperManager.java:591)
at org.apache.giraph.zk.ZooKeeperManager.onlineZooKeeperServers(ZooKeeperManager.java:617)
at org.apache.giraph.graph.GraphTaskManager.startZooKeeperManager(GraphTaskManager.java:357)
at org.apache.giraph.graph.GraphTaskManager.setup(GraphTaskManager.java:188)
at org.apache.giraph.graph.GraphMapper.setup(GraphMapper.java:60)
at org.apache.giraph.graph.GraphMapper.run(GraphMapper.java:90)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:364)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
私は giraph 1.2.0 を使用しています。Mvnrepositoryによると、giraph は guava 18に依存しています。guava 16 から削除され、 guava 15で廃止されたため、そのメソッドが存在しないことは理にかなっています。giraph が guava 15 のメソッドを使用しようとしていることは意味がありません。例外をスローするメソッドがgiraph 1.2.0 にZooKeeperManager :generateZooKeeperConfigFile
存在しないことも意味がありません。
Hadoop クラスターにデプロイされている jar の依存関係セクションは次のとおりです。
<dependencies>
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-cassandra</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>hadoop-gremlin</artifactId>
<version>3.0.1-incubating</version>
</dependency>
<dependency>
<groupId>org.apache.giraph</groupId>
<artifactId>giraph-core</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>com.company</groupId>
<artifactId>domain</artifactId>
<version>2.0.5</version>
</dependency>
</dependencies>
実行mvn dependency:tree
すると、実際にはグアバ 18 が必要であることが示されます。グアバに関するその他の参照はありません。
[INFO] +- org.apache.giraph:giraph-core:jar:1.2.0:compile
[INFO] | +- com.google.guava:guava:jar:18.0:compile
さらに、hadoop クラスターにデプロイされた他の jar はありません。Hadoop 1.2.1はグアバに依存しません。それで、何が起こっているのですか?この問題を解決するにはどうすればよいですか?