![](/img/trans.png)
[英]Hive on Hadoop, Map Reduce not working - Error: Could not find or load main class 1600
[英]Hive on Tez: Could not find or load main class 400
我正在嘗試按照正式文檔和Tez 安裝指南在 Tez上配置Hive 。 通過概述,我的環境和配置如下:-
3.1.2
3.1.2
0.9.2
1.8.0_242
7.7.1908
和 Debian 版本10 (buster)
到目前為止,我已經實現了使用bin/hive
和bin/beeline
正確啟動YARN/Spark/Hive
和Hive(mr)
。 然后我轉到下一步Hive on Tez
配置Hive on Tez
作為以下信息:-
export TEZ_CONF_DIR=/opt/tez/conf
export TEZ_JARS=/opt/tez/*:/opt/tez/lib/*
export HADOOP_CLASSPATH=$TEZ_CONF_DIR:$TEZ_JARS:$(hadoop classpath)
hdfs dfs -mkdir -p /apps/tez \
&& hdfs dfs -put /opt/tez/* /apps/tez \
&& hdfs dfs -chmod g+w /apps/tez
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/apps/tez/,${fs.defaultFS}/apps/tez/lib/</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>false</value>
</property>
</configuration>
<configuration>
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:postgresql://metastore-db:5432/metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.postgresql.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>some-user</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>some-password</value>
</property>
</configuration>
${HIVE_HOME}/bin/hiveserver2 --hiveconf hive.server2.enable.doAs=false
在Resource Manager UI
顯示了一個應用程序,其狀態為FAILED
,連同hiveserver2
一起向我顯示如下錯誤:-
Failing this attempt.Diagnostics: [2020-03-10 08:28:06.410]Exception from container-launch.
Container id: container_1583471849377_0012_02_000001
Exit code: 1
[2020-03-10 08:28:06.413]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
Error: Could not find or load main class 400
[2020-03-10 08:28:06.414]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
Error: Could not find or load main class 400
For more detailed output, check the application tracking page:
http://node-master:61688/cluster/app/application_1583471849377_0012
Then click on links to logs of each attempt.
. Failing the application.
我也有機會訪問 YARN 上的應用程序日志
stderr
提到Error: Could not find or load main class 400
launch_container.sh
提到為
echo "Launching container"
exec /bin/bash -c "$JAVA_HOME/bin/java \
-Xmx1228m \
-Djava.io.tmpdir=$PWD/tmp \
-server \
-Djava.net.preferIPv4Stack=true \
-Dhadoop.metrics.log.level=WARN \
400 \ # <---- Suspected which may be related to the above error.
-Dlog4j.configuratorClass=org.apache.tez.common.TezLog4jConfigurator \
-Dlog4j.configuration=tez-container-log4j.properties \
-Dyarn.app.container.log.dir=/opt/hadoop/logs/userlogs/application_1583471849377_0012/container_1583471849377_0012_02_000001 \
-Dtez.root.logger=INFO,CLA \
-Dsun.nio.ch.bugLevel='' \
org.apache.tez.dag.app.DAGAppMaster \
--session \
1>/opt/hadoop/logs/userlogs/application_1583471849377_0012/container_1583471849377_0012_02_000001/stdout \
2>/opt/hadoop/logs/userlogs/application_1583471849377_0012/container_1583471849377_0012_02_000001/stderr "
我不知道錯誤Could not find or load main class 400
來自哪里,唯一可能相關的錯誤是在上面提到的launch_container.sh
中。
你能幫忙建議如何解決這個問題嗎? 難道我做錯了什么?
編輯:
顯示長行的要點是
https://gist.github.com/charleech/8cd615c0236626882c7a3ea7532ad4d5
就我而言,400 類來自文件 $HADOOP_HOME/etc/hadoop/mapred-site.xml 上的配置參數,它確實出現在 launch_container.sh 中。 我在文件中編輯了以下屬性。
<property>
<name>yarn.app.mapreduce.am.command-opts</name>
<!-- <value>400</value> -->
<value>-Xmx256m</value>
</property>
您可以在此 cloudera doc上找到有關此參數的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.