Hive安裝及hive-site.xml不生效的踩坑


一、Hive安裝及配置

1,把apache-hive-2.3.6-bin.tar.gz上傳到linux的/software目錄下

清華大學資源包:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

2,解壓apache-hive-2.3.6-bin.tar.gz到/module/目錄下面:tar -zxvf apache-hive-2.3.6-bin.tar.gz -C /module/

3,修改apache-hive-2.3.6-bin.tar.gz的名稱為hive-2.3.6 :mv apache-hive-2.3.6-bin/ hive-2.3.6

4,修改/module/hive/conf目錄下的hive-env.sh.template名稱為hive-env.sh:mv hive-env.sh.template hive-env.sh

5,配置hive-env.sh文件:vi hive-env.sh

配置HADOOP_HOME路徑:export HADOOP_HOME=/module/hadoop-2.7.2

配置HIVE_CONF_DIR路徑:export HIVE_CONF_DIR=/module/hive/conf

 

 

 

二、Hadoop集群配置

1,必須啟動HDFS和YARN:sbin/start-dfs.sh  ,sbin/start-yarn.sh

2,進入hadoop-2.7.2 目錄,創建/tmp和/user/hive/warehouse兩個目錄並修改他們的同組權限可寫

bin/hadoop fs -mkdir /tmp  ,bin/hadoop fs -mkdir -p /user/hive/warehouse

改權限:bin/hadoop fs -chmod g+w /tmp  , bin/hadoop fs -chmod g+w /user/hive/warehouse

 

 

 

創建目錄修改權限,這兩個文件看不見?

三、修改Hive環境變量,之后source一下

#HIVE_HOME

export HIVE_HOME=/module/hive-2.3.6

export PATH=$PATH:$HIVE_HOME/bin

 

 

hive環境變量

三、Hive元數據配置到MySql

一、驅動拷貝

1.在/software/mysql-libs目錄下解壓mysql-connector-java-5.1.27.tar.gz驅動包:

tar -zxvf mysql-connector-java-5.1.27.tar.gz

官網包:https://dev.mysql.com/downloads/file/?id=476197

2.拷貝/software/mysql-libs/mysql-connector-java-5.1.27目錄下的mysql-connector-java-5.1.27-bin.jar到/module/hive-2.3.6/lib/ :

cp mysql-connector-java-5.1.27-bin.jar  /module/hive-2.3.6/lib/

二、配置Metastore到MySql

1.在/module/hive/conf目錄下創建一個hive-site.xml :vi hive-site.xml

2.根據官方文檔配置參數,拷貝數據到hive-site.xml文件中

2020421:mysql連接信息后增加  &useSSL=false ,不然hive 的任何命令會報ssl錯誤

https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

          <name>javax.jdo.option.ConnectionURL</name>

          <value>jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>

          <description>JDBC connect string for a JDBC metastore</description>

        </property>

        <property>

          <name>javax.jdo.option.ConnectionDriverName</name>

          <value>com.mysql.jdbc.Driver</value>

          <description>Driver class name for a JDBC metastore</description>

        </property>

        <property>

          <name>javax.jdo.option.ConnectionUserName</name>

          <value>root</value>

          <description>username to use against metastore database</description>

        </property>

        <property>

          <name>javax.jdo.option.ConnectionPassword</name>

          <value>000000</value>

          <description>password to use against metastore database</description>

        </property>

      <property>

        <name>hive.cli.print.header</name>

        <value>true</value>

      </property>

      <property>

        <name>hive.cli.print.current.db</name>

        <value>true</value>

      </property>

      <property>

        <name>hive.metastore.schema.verification</name>

        <value>false</value>

      </property>

</configuration>

 

 

 

配置文件修改

3.關閉元數據檢查:hive-site.xml 里面增加一個配置:不加這個使用Hive的時候會連接超時,並且找不到元數據

<property>

    <name>hive.metastore.schema.verification</name>

    <value>false</value>

</property>

4,進入到Hive的conf目錄下(為什么別人是進bin?我進入bin執行的是derby的初始化,會失敗),此條已廢棄,存在問題,詳細信息見下面解釋。

4,更新: 在使用了上面的conf目錄進行元數據初始化的之后,存在一個問題:即,必須在conf目錄下進入Hive才會得到mysql的元數據,在別的目錄下進Hive會是默認的derby元數據,而且會超時報錯。也就是說實際上並沒有做到真正的使用mysql存儲元數據,困擾了一晚上,最后找的了下面的解決方式。

原因:是因為hive依賴hadoop(hive-env.sh里設置有hadoop的路徑),但是hadoop的環境變量卻沒有讀到hive-site.xml

解決方式:

參考文檔:

https://blog.csdn.net/lsr40/article/details/78026125(hive-site.xml修改之后不生效與一些beeline,hiveserver2的報錯)

 重要重要重要

1,hadoop的配置文件hadoop-env.sh中(其實就是hadoop的根目錄下的etc/hadoop里面的那些配置文件里)

找到export HADOOP_CLASSPATH這行,修改值為

export HADOOP_CLASSPATH=$HIVE_HOME/conf:$HADOOP_CLASSPATH(HIVE_HOME必須配置環境變量,或者寫死)

 

 

 

修改Hadoop的配置文件

2,之后再回到Hive的bin目錄下進行元數據初始化,這樣無論在哪個目錄下進入Hive,使用的都會是mysql。(bin目錄下進行的初始化才是真的使用了mysql元數據)

配置元數據類型為mysql:schematool -dbType mysql -initSchema

注:如果創建失敗,看看site 文件里(node1:3306/hive?createDatabaseIfNotExist=true),那個Hive的數據庫是不是已經在Mysql 創建了,刪掉再重新初始化即可。

 

 

 

出現這個就是對的,出現derby是不對的

5.配置完畢后,如果啟動hive異常,可以重新啟動虛擬機。(重啟后,別忘了啟動hadoop集群)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM