복붙노트

[HADOOP] HBase completebulkload가 예외를 반환 함

HADOOP

HBase completebulkload가 예외를 반환 함

Hadoop 문서에 설명 된 대량로드 방법을 사용하여 텍스트 파일 (몇 GB)에서 HBase 테이블을 빠르게 대량 채우려 고합니다.

HBase 테이블로 푸시하려는 HFile을 만들었습니다.

이 명령을 사용할 때 :

hadoop jar /home/hxcaine/hadoop/lib/hbase.jar completebulkload /user/hxcaine/dbpopulate/output/cf1 my_hbase_table

작업이 시작된 후이 예외가 발생합니다.

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/ThreadFactoryBuilder
        at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:195)
        at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:696)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
        at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.main(LoadIncrementalHFiles.java:701)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
        at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
        at org.apache.hadoop.hbase.mapreduce.Driver.main(Driver.java:49)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:197)
Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.ThreadFactoryBuilder
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        ... 17 more

그러나 Guava jar가 내 클래스 경로에 있음을 알 수 있으며 jar 내부를 확인하면 ThreadFactoryBuilder.class를 볼 수 있습니다.

이 버전을 사용하고 있습니다.

클래스 경로에 구형 구아바 병이 있지만 그것이 어디에서 왔는지 모르겠습니다. 효과가 있어야한다고 생각하지 않습니다.

어떤 아이디어?

해결법

  1. ==============================

    1.당신이 실행하면 어떻게됩니까 :

    당신이 실행하면 어떻게됩니까 :

    export HADOOP_CLASSPATH=`hbase classpath`
    

    로드를 실행하기 전에? 스택 추적에서 실제 작업 중 하나에 항아리가 필요한 것 같습니다. 실제로 M / R 작업을 시작한다는 사실에 놀랐습니다.

  2. from https://stackoverflow.com/questions/11692497/hbase-completebulkload-returns-exception by cc-by-sa and MIT license