hive安裝
本次操作是在安裝完hadoop的基礎上進行的,安裝
hadoop請參看上篇部落格hadoop集群搭建。
hive會使用到mysql,所以需要提前安裝好mysql服務。可以參看這篇部落格mysql解壓版安裝_wbo112的部落格-CSDN部落格。本次所有操作也都是基於
hadoop用戶執行。
jdk8以上會報類載入器的報錯,需要用jdk8。請自行將jdk版本換成jdk8。本次
hive安裝到hadoop1節點上。
1、修改jdk版本為jdk8
由於我們
hive只裝到hadoop1節點上,所以只修改hadoop1節點上的jdk就可以了。我使用的是
jdk-8u211-linux-x64.tar.gz,已上傳到/home/hadoop/software目錄中。
- 解壓
jdk8
tar -zxvf jdk-8u211-linux-x64.tar.gz
-
修改環境變數
修改
~/.bashrc,將JAVA_HOME修改為jdk8的安裝目錄。
執行
source ~/.bashrc使環境變數生效。 -
執行
java -version驗證修改
2、修改hadoop配置
修改
hadoop配置在hadoop1上執行,後分發到其他節點。
- 節點
/home/hadoop/software/hadoop-3.2.3/etc/hadoop/core-site.xml文件中加入如下配置。
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>

- 將剛才修改的
core-site.xml拷貝至其他節點
scp /home/hadoop/software/hadoop-3.2.3/etc/hadoop/core-site.xml hadoop2:/home/hadoop/software/hadoop-3.2.3/etc/hadoop/
scp /home/hadoop/software/hadoop-3.2.3/etc/hadoop/core-site.xml hadoop3:/home/hadoop/software/hadoop-3.2.3/etc/hadoop/
-
在
hadoop1節點上重啟服務stop-dfs.sh start-dfs.sh
3、安裝hive
我本次使用的是
apache-hive-3.1.2-bin.tar.gz,已經上傳到了/home/hadoop/software/目錄。
cd /home/hadoop/software/
tar -zxvf apache-hive-3.1.2-bin.tar.gz
2.1 、hadoop與hive的guava有衝突,需要刪除hive中的guava,將hadoop中的guava拷貝過來。
rm /home/hadoop/software/apache-hive-3.1.2-bin/lib/guava-19.0.jar
cp /home/hadoop/software/hadoop-3.2.3/share/hadoop/common/lib/guava-27.0-jre.jar /home/hadoop/software/apache-hive-3.1.2-bin/lib/
2.2、接下來就要進入/home/hadoop/software/apache-hive-3.1.2-bin/conf/ 目錄,修改配置:
-
創建一個
hive-env.shcp hive-env.sh.template hive-env.sh #添加如下配置:
HADOOP_HOME=/home/hadoop/software/hadoop-3.2.3 export HIVE_CONF_DIR=/home/hadoop/software/apache-hive-3.1.2-bin/conf xport HIVE_AUX_JARS_PATH=/home/hadoop/software/apache-hive-3.1.2-bin/lib

-
創建
hive-site.xml<?xml version="1.0" encoding="UTF-8" standalone="no"?> <configuration> <!-- 存儲元數據mysql相關配置 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- H2S運行綁定host --> <property> <name>hive.server2.thrift.bind.host</name> <value>hadoop1</value> </property> <!-- 遠程模式部署metastore metastore地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop1:9083</value> </property> <!-- 關閉元數據存儲授權 --> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> </configuration> -
將
mysql的jdbc包拷貝到hive的lib目錄中(最好是mysql-connector-java-8.x.xx.jar)。
4、初始化元數據
cd /home/hadoop/software/apache-hive-3.1.2-bin
./bin/schematool -initSchema -dbType mysql -verbos #如果是其他資料庫,修改這裡的mysql就可以了
執行完之後,mysql中就會有個hive3的資料庫,裡面有74個表

5、創建hive的存儲目錄
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
6、啟動hive
cd /home/hadoop/software/apache-hive-3.1.2-bin
nohup ./bin/hive --service metastore &
nohup ./bin/hive --service hiveserver2 &
# 前台啟動
# ./bin/hive --service metastore
# 前台啟動開啟debug日誌
#./bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console
查看進程,會發現有兩個RunJar進程

啟動後,web介面也可以打開,默認埠是10002。

7、客戶端連接
之前的客戶端工具是
./bin/hive,目前已經被棄用,現在推薦使用./bin/beeline.關於
hive客戶端的操作,具體可以看官方文檔.LanguageManual Cli – Apache Hive – Apache Software Foundation
使用bin/beeline進行訪問(可以在所有節點上操作。只需要把hive安裝包拷貝過去,不需要再做任何其他操作)
關於
beeline的更多內容,還是建議看官方文檔HiveServer2 Clients – Apache Hive – Apache Software Foundation
! connect jdbc:hive2://hadoop1:10000

這裡有個細節需要注意下:
如果是剛啟動
hive後,使用beeline連接會報錯,看日誌是當前沒有org/apache/tez/dag/api/TezConfiguration,會60s後重啟,用其他去連接,所以需要hive啟動60s後才能連接成功。
日誌默認在
tmp/hadoop/hive.log文件中






