2016-06-29 2 views
0

私はHcatalogを使用して、Hcatalputを使用してHiberalテーブル 'A'からHcatInputFormatで詳細を取得し、それを処理し、HcatOutputフォーマットを使用してHiveテーブル 'B'に書き戻します。HCatOutputFormat ClassNotFoundException

私はEclipseを使用してプログラムを書いて、プロジェクトから実行可能な「Hadooptest」jarファイルを作成し、と私は抽出することにより実行可能なjarファイルを作成するとき、私は-libjarsパラメータ

で(HadoopクラスタでのHadoop jarコマンドを使用してjarファイルを実行しますすべて参照されたjarをjarファイルに入れてからhadoopクラスタで実行するとmapreduceはうまく動作して正常に終了します

生成されたJARの隣にサブフォルダに必要なライブラリをコピーしてrunnable jarを作成すると、 'オプションを選択し、jarライブラリとrefrencedライブラリの両方をhadoopクラスタに移動して実行します。

"org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.RuntimeException:java.lang.ClassNotFoundExceptionがクラス org.apache.hive.hcatalog.mapreduce.HCatOutputFormatが見つかりません"以下

は、完全な糸のログです:

2016-06-29 12:17:57,951 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Created MRAppMaster for application appattempt_1466834505106_0057_000002 
2016-06-29 12:17:58,672 WARN [main] org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
2016-06-29 12:17:58,773 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Executing with tokens: 
2016-06-29 12:17:58,773 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Kind: YARN_AM_RM_TOKEN, Service: , Ident: (appAttemptId { application_id { id: 57 cluster_timestamp: 1466834505106 } attemptId: 2 } keyId: 783034855) 
2016-06-29 12:17:58,974 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Using mapred newApiCommitter. 
2016-06-29 12:17:59,840 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: OutputCommitter set in config null 
2016-06-29 12:17:59,920 INFO [main] org.apache.hadoop.service.AbstractService: Service org.apache.hadoop.mapreduce.v2.app.MRAppMaster failed in state INITED; cause: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.mapreduce.HCatOutputFormat not found 
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.mapreduce.HCatOutputFormat not found 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$1.call(MRAppMaster.java:472) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$1.call(MRAppMaster.java:452) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.callWithJobClassLoader(MRAppMaster.java:1538) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.createOutputCommitter(MRAppMaster.java:452) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.serviceInit(MRAppMaster.java:371) 
     at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$4.run(MRAppMaster.java:1496) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:415) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1493) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1426) 
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.mapreduce.HCatOutputFormat not found 
     at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195) 
     at org.apache.hadoop.mapreduce.task.JobContextImpl.getOutputFormatClass(JobContextImpl.java:222) 
     at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$1.call(MRAppMaster.java:468) 
     ... 11 more 
Caused by: java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.mapreduce.HCatOutputFormat not found 
     at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2101) 
     at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2193) 
     ... 13 more 
End of LogType:syslog 

そして、私が別々のフォルダに必要なライブラリをエクスポートし、瓶自体に抽出していないことが必要です。

これを理解する助けがあれば幸いです。

答えて

0

あなたのHadoopクラスタ内に存在aalreadyすべてのjarが、あなたは自分のプログラムにその場所を渡す必要があるが、それは公式のdocで述べています:

export HADOOP_HOME=<path_to_hadoop_install> 
export HCAT_HOME=<path_to_hcat_install> 
export HIVE_HOME=<path_to_hive_install> 
export LIB_JARS=$HCAT_HOME/share/hcatalog/hcatalog-core-0.5.0.jar, 
$HIVE_HOME/lib/hive-metastore-0.10.0.jar, 
$HIVE_HOME/lib/libthrift-0.7.0.jar, 
$HIVE_HOME/lib/hive-exec-0.10.0.jar, 
$HIVE_HOME/lib/libfb303-0.7.0.jar, 
$HIVE_HOME/lib/jdo2-api-2.3-ec.jar, 
$HIVE_HOME/lib/slf4j-api-1.6.1.jar 

export HADOOP_CLASSPATH=$HCAT_HOME/share/hcatalog/hcatalog-core-0.5.0.jar: 
$HIVE_HOME/lib/hive-metastore-0.10.0.jar: 
$HIVE_HOME/lib/libthrift-0.7.0.jar: 
$HIVE_HOME/lib/hive-exec-0.10.0.jar: 
$HIVE_HOME/lib/libfb303-0.7.0.jar: 
$HIVE_HOME/lib/jdo2-api-2.3-ec.jar: 
$HIVE_HOME/conf:$HADOOP_HOME/conf: 
$HIVE_HOME/lib/slf4j-api-1.6.1.jar 

$HADOOP_HOME/bin/hadoop --config $HADOOP_HOME/conf jar <path_to_jar> 
<main_class> -libjars $LIB_JARS <program_arguments> 
+0

うん@は..私はまさにこれをやっている54l3d ..私は上記の行で言及しています...私は$ LIB_JARSパラメータを渡すために-libjarsを使用していますが、HADOOP_CLASSPATH環境変数も設定しています...しかし、まだ** HcatOutputFormat ClassNotFoundException "** – abisheksampath