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`; do
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
    export 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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章