0

この特定のサイトから例を実行しようとしています: https://github.com/larsgeorge/hbase-book/tree/master/ch07

今..それは正常にコンパイルされます

しかし、例を実行しようとすると、次の例外が発生します。

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:115)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:719)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    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:416)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:113)
    ... 7 more
Caused by: java.lang.NoClassDefFoundError: org/json/simple/parser/JSONParser
    at mapreduce.ParseJson2$ParseMapper.<init>(ParseJson2.java:48)
    ... 12 more
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.JSONParser
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    ... 13 more

このファイルの pom から、単純な json が含まれていることがわかりますが、なぜこの問題が発生するのかわかりません。

4

1 に答える 1

0

問題は、map-reduce で実行すると、必要な jar がスコープ内にない (つまり、見つからない) ことだと思います。これを修正する 1 つの方法は、すべての依存関係を含む jar を作成し、それをジョブとして送信することです。他のオプションは、各ノードで利用可能であることを確認し、depdndecies を Hadoops の分散キャッシュにデプロイすることです (ただし、最初の方法が最も簡単ですが、jar が大きいため、ジョブの開始が遅くなります)。

于 2013-09-01T06:48:00.873 に答える