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 、hadoophiveguava有衝突,需要刪除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.sh

    cp 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&amp;useSSL=false&amp;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文件中

Tags: