Exception in thread main java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfiguration
hive on tez,為了這個配置今天是第四天了,MLGB的!!!
################################環境配置如下##########################################
| 軟件 | 版本 |
| Hadoop | 3.1.2 |
| Hive | 3.0.0 |
| Tez | 0.9.2 |
###################################################################################################
這個報錯是在啟動hive客戶端的時候觸發了。
######################################下面是解決方案#####################################
直接說解決方案:
~/.bashrc中加入(應該也可以是$HADOOP_HOME/etc/hadoop/hadoop-env.sh,根據自己喜好即可)
export TEZ_HOME=/home/appleyuchi/bigdata/apache-tez-0.9.2-bin for jar in `ls $TEZ_HOME |grep jar`; doexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar done for jar in `ls $TEZ_HOME/lib`; doexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar done然后source ~/.bashrc
不用重啟任何集群
重新啟動hive客戶端,就會發現報錯消失。
##############################下面是錯誤配置的分析(可以跳過不看)##############################
注意:
有些同學非常自信(我一開始也是這樣),
寫成如下:
export TEZ_CONF_DIR=$TEZ_HOME/conf export TEZ_JARS=$TEZ_HOME/*:$TEZ_HOME/lib/* export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_CONF_DIR:$TEZ_JARS export HIVE_AUX_JARS_PATH=$HADOOP_HOME/share/hadoop/common/hadoop-lzo-0.4.13.jar:$TEZ_JARS上述寫法寫法會導致報錯
②ERROR [main] common.FileUtils: The jar file path file:///home/appleyuchi/bigdata/apache-tez-0.9.2-bin/* doesn't exist
然后無論你寫成:
export TEZ_JARS=$TEZ_HOME/*
export TEZ_JARS=$TEZ_HOME/*.jar
export TEZ_JARS=$TEZ_HOME
都會報類似②的錯誤
有人反駁:
但是我以前寫別的環境變量的時候明明就是這么寫的啊(例如CLASSPATH),為什么設置TEZ環境變量的時候不是這么寫?
因為TEZ對環境變量的處理方式比較特殊,所以你就老老實實照著寫吧
你要注意,這個環境變量是被TEZ的腳本獲取之后進行處理,不同軟件在獲取環境變量后的處理方式不同,處理方式的不同也就意味著你的環境變量的寫法可能不同。
你可以回想下,你用python讀取數據的時候,這個數據是有特定格式要求的。
###################################################################################################
Reference:
https://www.bbsmax.com/A/q4zVWZexJK/
總結
以上是生活随笔為你收集整理的Exception in thread main java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfiguration的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libvirt
- 下一篇: hiveserver或者hive启动出现