Your Mapper needs to be on the CLASSPATH on all machines. Add your class to the HADOOP_CLASSPATH -- see hadoop-env.sh -- on all machines or make a job jar that bundles your bulk importer (See http://hadoop.apache.org/common/docs/current/mapred_tutorial.html#Example%3A+WordCount+v2.0where its producing a jar and passing that to bin/hadoop for it to run).
St.Ack On Fri, Jul 31, 2009 at 3:36 AM, Xine Jar <[email protected]> wrote: > Hallo, > I have a cluster of four machines running hadoop-0.19.1 and hbase-0.19.3. > I am interested to write a program where the map function reads from the > hbase. > > I was able to compile and run the simple Java example MyClient from the > "HBASE 0.19.3 API" document. > Now I tried the example BulkImport which is very close to my need, I was > able to compile it but got and error > when running it. > > *For running it I did the following * > -I have created a testfile containing four strings "row1 10 > mytable:column1 value1" separated with tabs > -I have copied the testfile to the dfs. > -Using the hbase shell, I have created a table called "mytable" with the > family column "column1" > -I run the program: *bin/hbase BulkImport testfile mytable > * > *Error I got * > > 09/07/31 13:20:54 INFO mapred.JobClient: Task Id : > attempt_200907311137_0008_m_000000_2, Status : FAILED > java.lang.RuntimeException: java.lang.RuntimeException: > java.lang.ClassNotFoundException: BulkImport$InnerMap > at > org.apache.hadoop.conf.Configuration.getClass(Configuration.java:752) > at org.apache.hadoop.mapred.JobConf.getMapperClass(JobConf.java:690) > at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:34) > at > org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:58) > at > org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:83) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:338) > at org.apache.hadoop.mapred.Child.main(Child.java:158) > Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: > BulkImport$InnerMap > at > org.apache.hadoop.conf.Configuration.getClass(Configuration.java:720) > at > org.apache.hadoop.conf.Configuration.getClass(Configuration.java:744) > ... 6 more > Caused by: java.lang.ClassNotFoundException: BulkImport$InnerMap > at java.net.URLClassLoader$1.run(URLClassLoader.java:200) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > at java.lang.ClassLoader.loadClass(ClassLoader.java:252) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:247) > at > org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:673) > at > org.apache.hadoop.conf.Configuration.getClass(Configuration.java:718) > ... 7 more > > > The InnerMap is the map class, how come it does not find it? Did I miss > sth? > > > Thank you guys, with your help we can proceed, > CJ >
