2016-12-01 7 views
1

hcatalog를 통해 mapreduce의 하이브 테이블에 액세스하려고했는데 다음 예외가 발생했습니다 : 나는이를 검색하여 루트 원인 그러나 성공을 얻을 수 없어서 여기에 내 질문을 게시하고 있습니다.org.datanucleus.exceptions.NucleusUserException : 오류 : 이름 "JDO"에 대한 API 정의를 찾을 수 없습니다.

2016-12-01 15:48:35,855 INFO [main] metastore.HiveMetaStore (HiveMetaStore.java:newRawStore(564)) - 0: Opening raw store with implementation class:org.apache.hadoop.hive.metastore.ObjectStore 
2016-12-01 15:48:35,857 INFO [main] metastore.ObjectStore (ObjectStore.java:initialize(325)) - ObjectStore, initialize called 
2016-12-01 15:48:35,862 ERROR [main] DataNucleus.Persistence (Log4JLogger.java:error(115)) - Error : Could not find API definition for name "JDO". Perhaps you dont have the requisite datanucleus-api-XXX jar in the CLASSPATH? 
Exception in thread "main" java.io.IOException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: Unable to instantiate org.apache.hive.hcatalog.common.HiveClientCache$CacheableHiveMetaStoreClient 
    at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:97) 
    at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:51) 
    at hcatalog.DriverClass.run(DriverClass.java:30) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) 
    at hcatalog.DriverClass.main(DriverClass.java:48) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: Unable to instantiate org.apache.hive.hcatalog.common.HiveClientCache$CacheableHiveMetaStoreClient 
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2234) 
    at com.google.common.cache.LocalCache.get(LocalCache.java:3965) 
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4764) 
    at org.apache.hive.hcatalog.common.HiveClientCache.getOrCreate(HiveClientCache.java:227) 
    at org.apache.hive.hcatalog.common.HiveClientCache.get(HiveClientCache.java:202) 
    at org.apache.hive.hcatalog.common.HCatUtil.getHiveMetastoreClient(HCatUtil.java:558) 
    at org.apache.hive.hcatalog.mapreduce.InitializeInput.getInputJobInfo(InitializeInput.java:104) 
    at org.apache.hive.hcatalog.mapreduce.InitializeInput.setInput(InitializeInput.java:86) 
    at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:95) 
    ... 11 more 
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hive.hcatalog.common.HiveClientCache$CacheableHiveMetaStoreClient 
    at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1627) 
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:80) 
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:130) 
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:115) 
    at org.apache.hive.hcatalog.common.HiveClientCache$5.call(HiveClientCache.java:231) 
    at org.apache.hive.hcatalog.common.HiveClientCache$5.call(HiveClientCache.java:227) 
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4767) 
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568) 
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350) 
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313) 
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228) 
    ... 19 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1625) 
    ... 29 more 
Caused by: javax.jdo.JDOFatalInternalException: Unexpected exception caught. 
NestedThrowables: 
java.lang.reflect.InvocationTargetException 
    at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1193) 
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808) 
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701) 
    at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:424) 
    at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:453) 
    at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:327) 
    at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:294) 
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73) 
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) 
    at org.apache.hadoop.hive.metastore.RawStoreProxy.<init>(RawStoreProxy.java:58) 
    at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:67) 
    at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStore(HiveMetaStore.java:581) 
    at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:546) 
    at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:612) 
    at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:398) 
    at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:78) 
    at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:84) 
    at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6396) 
    at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:236) 
    at org.apache.hive.hcatalog.common.HiveClientCache$CacheableHiveMetaStoreClient.<init>(HiveClientCache.java:332) 
    ... 34 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at javax.jdo.JDOHelper$16.run(JDOHelper.java:1965) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960) 
    at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166) 
    ... 53 more 
Caused by: org.datanucleus.exceptions.NucleusUserException: Error : Could not find API definition for name "JDO". Perhaps you dont have the requisite datanucleus-api-XXX jar in the CLASSPATH? 
    at org.datanucleus.api.ApiAdapterFactory.getApiAdapter(ApiAdapterFactory.java:94) 
    at org.datanucleus.AbstractNucleusContext.<init>(AbstractNucleusContext.java:115) 
    at org.datanucleus.PersistenceNucleusContextImpl.<init>(PersistenceNucleusContextImpl.java:165) 
    at org.datanucleus.PersistenceNucleusContextImpl.<init>(PersistenceNucleusContextImpl.java:154) 
    at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.<init>(JDOPersistenceManagerFactory.java:419) 
    at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:308) 
    at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:217) 

나는 POM 이하로 사용하고 있습니다 :

<?xml version="1.0"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>hadoop</groupId> 
    <artifactId>hcatlog</artifactId> 
    <version>0.1</version> 
    <properties> 
    <main.class>hcatalog.DriverClass</main.class> 
    <datanucleus.version>5.0.1</datanucleus.version> 
    <hadoop.version>2.7.3</hadoop.version> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-client</artifactId> 
     <version>2.7.3</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.mrunit</groupId> 
     <artifactId>mrunit</artifactId> 
     <version>1.1.0</version> 
     <classifier>hadoop2</classifier> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-minicluster</artifactId> 
     <version>2.7.3</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hive.hcatalog</groupId> 
     <artifactId>hive-hcatalog-core</artifactId> 
     <version>2.1.0</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.5</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>javax.jdo</artifactId> 
     <version>3.2.0-m1</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-core</artifactId> 
     <version>(4.1,)</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-api-jdo</artifactId> 
     <version>[4.2.0-m1,)</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-rdbms</artifactId> 
     <version>(4.1,)</version> 
     <scope>runtime</scope> 
    </dependency> 
    </dependencies> 
    <repositories> 
    <repository> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <id>central</id> 
     <name>Central Repository</name> 
     <url>http://repo.maven.apache.org/maven2</url> 
    </repository> 
    </repositories> 
    <pluginRepositories> 
    <pluginRepository> 
     <releases> 
     <updatePolicy>never</updatePolicy> 
     </releases> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <id>central</id> 
     <name>Central Repository</name> 
     <url>http://repo.maven.apache.org/maven2</url> 
    </pluginRepository> 
    </pluginRepositories> 
    <build> 
    <sourceDirectory>/home/impadmin/rampup/projects/hadoop/src</sourceDirectory> 
    <scriptSourceDirectory>/home/impadmin/rampup/projects/hadoop/src/main/scripts</scriptSourceDirectory> 
    <testSourceDirectory>/home/impadmin/rampup/projects/hadoop/src/test/java</testSourceDirectory> 
    <outputDirectory>/home/impadmin/rampup/projects/hadoop/target/classes</outputDirectory> 
    <testOutputDirectory>/home/impadmin/rampup/projects/hadoop/target/test-classes</testOutputDirectory> 
    <resources> 
     <resource> 
     <directory>/home/impadmin/rampup/projects/hadoop/src/main/resources</directory> 
     </resource> 
    </resources> 
    <testResources> 
     <testResource> 
     <directory>/home/impadmin/rampup/projects/hadoop/src/test/resources</directory> 
     </testResource> 
    </testResources> 
    <directory>/home/impadmin/rampup/projects/hadoop/target</directory> 
    <finalName>hcatlog-0.1</finalName> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.3</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-5</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.8</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.3.2</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-5</version> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <archive> 
       <manifest> 
        <mainClass>hcatalog.DriverClass</mainClass> 
       </manifest> 
       </archive> 
       <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <appendAssemblyId>false</appendAssemblyId> 
      </configuration> 
      </execution> 
     </executions> 
     <configuration> 
      <archive> 
      <manifest> 
       <mainClass>hcatalog.DriverClass</mainClass> 
      </manifest> 
      </archive> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      <appendAssemblyId>false</appendAssemblyId> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>/home/impadmin/rampup/projects/hadoop/target/jars</outputDirectory> 
       <overWriteReleases>false</overWriteReleases> 
       <overWriteSnapshots>false</overWriteSnapshots> 
       <overWriteIfNewer>true</overWriteIfNewer> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-clean-plugin</artifactId> 
     <version>2.5</version> 
     <executions> 
      <execution> 
      <id>default-clean</id> 
      <phase>clean</phase> 
      <goals> 
       <goal>clean</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.6</version> 
     <executions> 
      <execution> 
      <id>default-testResources</id> 
      <phase>process-test-resources</phase> 
      <goals> 
       <goal>testResources</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>default-resources</id> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>resources</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>default-jar</id> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.5.1</version> 
     <executions> 
      <execution> 
      <id>default-compile</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>default-testCompile</id> 
      <phase>test-compile</phase> 
      <goals> 
       <goal>testCompile</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.12.4</version> 
     <executions> 
      <execution> 
      <id>default-test</id> 
      <phase>test</phase> 
      <goals> 
       <goal>test</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-install-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>default-install</id> 
      <phase>install</phase> 
      <goals> 
       <goal>install</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-deploy-plugin</artifactId> 
     <version>2.7</version> 
     <executions> 
      <execution> 
      <id>default-deploy</id> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-site-plugin</artifactId> 
     <version>3.3</version> 
     <executions> 
      <execution> 
      <id>default-site</id> 
      <phase>site</phase> 
      <goals> 
       <goal>site</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>/home/impadmin/rampup/projects/hadoop/target/site</outputDirectory> 
       <reportPlugins> 
       <reportPlugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-project-info-reports-plugin</artifactId> 
       </reportPlugin> 
       </reportPlugins> 
      </configuration> 
      </execution> 
      <execution> 
      <id>default-deploy</id> 
      <phase>site-deploy</phase> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>/home/impadmin/rampup/projects/hadoop/target/site</outputDirectory> 
       <reportPlugins> 
       <reportPlugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-project-info-reports-plugin</artifactId> 
       </reportPlugin> 
       </reportPlugins> 
      </configuration> 
      </execution> 
     </executions> 
     <configuration> 
      <outputDirectory>/home/impadmin/rampup/projects/hadoop/target/site</outputDirectory> 
      <reportPlugins> 
      <reportPlugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-project-info-reports-plugin</artifactId> 
      </reportPlugin> 
      </reportPlugins> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <reporting> 
    <outputDirectory>/home/impadmin/rampup/projects/hadoop/target/site</outputDirectory> 
    </reporting> 
</project> 

답변

1

<dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-core</artifactId> 
     <version>(4.1,)</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-api-jdo</artifactId> 
     <version>[4.2.0-m1,)</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-rdbms</artifactId> 
     <version>(4.1,)</version> 
     <scope>runtime</scope> 
    </dependency> 

<dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-core</artifactId> 
     <version>5.0.1</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-api-jdo</artifactId> 
     <version>5.0.1</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-rdbms</artifactId> 
     <version>5.0.1</version> 
     <scope>runtime</scope> 
    </dependency> 

와의 pom.xml에 교체 시도 할 mvn clean install

+0

여전히 같은 문제에 직면 해 있습니다. 나는 아래 명령에서 응용 프로그램을 실행하고있다. hadoop --config /usr/local/hive/apache-hive-2.1.0-bin/conf/ jar /home/impadmin/rampup/projects/hadoop/target/hcatlog-0.1.jar – sunil