Excepción en el hilo "main" java.lang.NoClassDefFoundError: org / apache / hadoop / hbase / HBaseConfiguration

Estoy usando Hadoop 1.0.3 y HBase 0.94.22. Estoy tratando de ejecutar un programa mapeador para leer valores de una tabla Hbase y enviarlos a un archivo. Estoy teniendo el siguiente error:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:340)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

El código es el siguiente

import java.io.IOException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;


    public class Test {

    static class TestMapper extends TableMapper<Text, IntWritable> {
        private static final IntWritable one = new IntWritable(1);

        public void map(ImmutableBytesWritable row, Result value, Context context) throws    IOException, InterruptedException
        {
            ImmutableBytesWritable userkey = new ImmutableBytesWritable(row.get(), 0 , Bytes.SIZEOF_INT);
            String key =Bytes.toString(userkey.get());
            context.write(new Text(key), one);

        }
    }


    public static void main(String[] args) throws Exception {

        HBaseConfiguration conf = new HBaseConfiguration();
        Job job = new Job(conf, "hbase_freqcounter");
        job.setJarByClass(Test.class);
        Scan scan = new Scan();

        FileOutputFormat.setOutputPath(job, new Path(args[0]));
        String columns = "data";
        scan.addFamily(Bytes.toBytes(columns));
        scan.setFilter(new FirstKeyOnlyFilter());
        TableMapReduceUtil.initTableMapperJob("test",scan, TestMapper.class, Text.class, IntWritable.class, job);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        System.exit(job.waitForCompletion(true)?0:1);

    }

}

Obtengo el código anterior exportado a un archivo jar y en la línea de comando uso el siguiente comando para ejecutar el código anterior.

hadoop jar /home/testdb.jar test

donde test es la carpeta en la que se deben escribir los resultados del mapeador.

He comprobado algunos otros enlaces comoCausado por: java.lang.ClassNotFoundException: org.apache.zookeeper.KeeperException donde se sugirió incluir el archivo zookeeper en el classpath, pero al crear el proyecto en eclipse ya he incluido el archivo zookeeper del directorio lib de hbase. El archivo que he incluido es zookeeper-3.4.5.jar. Ans también visitó este enlace tambiénHBase - java.lang.NoClassDefFoundError en java , pero estoy usando una clase de asignador para obtener los valores de la tabla hbase, no ninguna API de cliente. Sé que estoy cometiendo un error en alguna parte, chicos, ¿podrían ayudarme?

He notado otra cosa extraña, cuando elimino todo el código en la función principal, excepto la primera línea "HBaseConfiguration conf = new HBaseConfiguration ();", luego exporto el código a un archivo jar e intento compilar el archivo jar como hadoop jar test.jar Todavía recibo el mismo error. Parece que estoy definiendo la variable conf incorrectamente o hay algún problema con mi entorno.

Respuestas a la pregunta(5)

Su respuesta a la pregunta