2013-11-14 1 views
0

단일 노드에서 맵 축소 작업을 테스트했지만 작동 중이지만 이제 원격 클러스터에서 실행하려고합니다. ClassNotFoundExcepton을 얻고 있습니다.ClassNotFoundException 클러스터에서 HBase 맵 축소 작업을 수행 할 때

java.lang.RuntimeException: java.lang.ClassNotFoundException: Pivot$Mapper 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:857) 
    ... 

은 내가 부족 것이 있습니다 :

public class Pivot { 
    public static class Mapper extends TableMapper<ImmutableBytesWritable, ImmutableBytesWritable> { 
     @Override 
     public void map(ImmutableBytesWritable rowkey, Result values, Context context) throws IOException { 
      (map code) 
     } 
    } 

    public static class Reducer extends TableReducer<ImmutableBytesWritable, ImmutableBytesWritable, ImmutableBytesWritable> { 
     public void reduce(ImmutableBytesWritable key, Iterable<ImmutableBytesWritable> values, Context context) throws IOException, InterruptedException { 
      (reduce code) 
     } 
    } 

    public static void main(String[] args) { 
     Configuration conf = HBaseConfiguration.create(); 
     conf.set("fs.default.name", "hdfs://hadoop-master:9000"); 
     conf.set("mapred.job.tracker", "hdfs://hadoop-master:9001"); 
     conf.set("hbase.master", "hadoop-master:60000"); 
     conf.set("hbase.zookeeper.quorum", "hadoop-master"); 
     conf.set("hbase.zookeeper.property.clientPort", "2222"); 
     Job job = new Job(conf); 
     job.setJobName("Pivot"); 
     job.setJarByClass(Pivot.class); 
     Scan scan = new Scan(); 
     TableMapReduceUtil.initTableMapperJob("InputTable", scan, Mapper.class, ImmutableBytesWritable.class, ImmutableBytesWritable.class, job); 
     TableMapReduceUtil.initTableReducerJob("OutputTable", Reducer.class, job); 
     job.waitForCompletion(true); 
    } 
} 

나는이 작업을 실행하려고 할 때 수신하고 오류는 다음과 같다 : 다음과 같이 내 코드 구성되어있다? 매퍼를 찾는 데 어려움이있는 이유는 무엇입니까?

+0

어떻게 작업을 호출 할 내에서 실행 테스트 할 수 있습니다, 항아리를 구축하고 hadoop jar myjar.jar ...을 사용하여 명령 줄에서 실행 해 나는 실행 해요 –

+0

을 (사용 된 전체 명령 줄을 제공하시기 바랍니다) 그것은 일식에서 – user2623855

답변

0

이클립스에서 작업을 실행하는 경우, Hadoop을 사용하려면 jar에서 작업을 시작해야한다는 점에 유의해야한다. Hadoop은 코드를 HDFS/JobTracker까지 보낼 수 있도록이 기능을 필요로합니다.

당신의 경우에는 직업 클래스를 항아리에 묶어 놓지 않은 다음 'jar에서'프로그램을 실행하면 CNFE가됩니다.

이 다음 작동 후에는 이클립스

관련 문제