Hive的mysql安裝配置


一、MySQL的安裝

  Hive的數據,是存在HDFS里的。此外,hive有哪些數據庫,每個數據庫有哪些表,這樣的信息稱之為hive的元數據信息

  元數據信息不存在HDFS,而是存在關系型數據庫里,hive默認用的是derby數據庫來存儲。即hive工作時,除了要依賴Hadoop,還要依賴關系型數據庫。

  注意:雖然我們能通過HDFS查看到hive有哪些數據庫,有哪些表,以及表里的數據,但是,這不是元數據信息。HDFS最主要的是存儲hive的數據信息。

  之前遇到的問題:當退出后,切換到不同的目錄來進入hive,發現庫和表沒有了,是因為,第一次從bin目錄進入hive,會在bin目錄下創建一個metastore.db目錄,在這個目錄下,創建一個derby.log文件來存儲

元數據信息。這個元數據信息是基於bin目錄來創建的。而切換到其他目錄進入hive時,查詢時不是基於bin目錄來查詢的,所有查不到元數據信息,導致查不到。這個問題是derby數據庫本身的問題,所以,我們不能用derby數據庫,此外,用derby數據庫,也不支持並發,比如一個人在操作hive,如果此時有其他人想用hive,用不了。所以我們選擇用mysql數據庫。目前hive支持derby和mysql兩種數據庫

 Linux下mysql的安裝過程:Linux下的MySQL安裝

二、Hive的mysql配置步驟

①刪除HDFS中的/usr/hive

    執行:hadoop fs -rmr /user/hive(需要啟動hadoop)

②將mysql驅動包上傳至hive的安裝目錄的lib目錄下

    我這里采用rz命令來上傳:mysql-connector-java-5.1.38-bin.jar

③在hive/conf添加配置文件,名字為:hive-site.xml

<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoopalone:3306/hive?createDatabaseIfNotExist=true</value>  //mysql的url
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name> //mysql的用戶名
        <value>root</value> 
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name> //mysql的密碼
        <value>root</value>
    </property>
</configuration>

  如圖所示,添加如下配置

④進入hive ,進入bin目錄,執行:sh  hive 

  如果出現:
  Access denied for user 'root'@'hadoop01' (using password: YES)這個錯誤,指的是當前用戶操作mysql數據庫的權限不夠。

⑤進入到mysql數據庫,進行權限分配 

  執行:grant all privileges on *.* to 'root'@'hadoopalone' identified by 'root' with grant option;

     grant all on *.* to 'root'@'%' identified by 'root';

  然后執行:flush privileges;(注意分號)

⑥手動創建Hive數據庫

  如果不事先在mysql里創建hive數據庫,在進入hive時,mysql會自動創建hive數據庫。但是注意,因為我們之前配置過mysql的字符集為utf-8,所以這個自動創建的hive數據庫的字符集是utf-8的。
  但是hive要求存儲元數據的字符集必須是iso8859-1。如果不是的話,hive會在創建表的時候報錯(先是卡一會,然后報錯)。

  進入mysql執行:create database hive character set latin1;

⑦以上步驟都做完后,再次進入mysql的hive數據,發現有如下表:

  

⑧通過navicat連接mysql數據庫

  

⑨可以通過DBS 、TBLS、COLUMNS_V2這三張表來查看元數據信息。

DBS 存放的數據庫的元數據信息

  

TBLS存放的tables表信息

  

COLUMNS表存放的是列字段信息

   

此外,可以通過查看SDS表來查詢HDFS里的位置信息

  

 至此,Hive配置mysql大功告成!如果有什么問題,大家一起留言討論。

 


免責聲明!

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



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