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: