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 不在范围内(即未找到)。解决这个问题的一种方法是创建一个包含所有依赖项的 jar 并将其作为作业提交。其他选项是确保它在每个节点中可用,并将 depdndecies 部署到 Hadoop 的分布式缓存(但第一个是最简单的 - 尽管由于 jar 更大,它会导致作业启动速度变慢)

于 2013-09-01T06:48:00.873 回答