hive 配置mysql_Hive的mysql安装配置
一、MySQL的安裝
Hive的數(shù)據(jù),是存在HDFS里的。此外,hive有哪些數(shù)據(jù)庫,每個數(shù)據(jù)庫有哪些表,這樣的信息稱之為hive的元數(shù)據(jù)信息。
元數(shù)據(jù)信息不存在HDFS,而是存在關(guān)系型數(shù)據(jù)庫里,hive默認(rèn)用的是derby數(shù)據(jù)庫來存儲。即hive工作時,除了要依賴Hadoop,還要依賴關(guān)系型數(shù)據(jù)庫。
注意:雖然我們能通過HDFS查看到hive有哪些數(shù)據(jù)庫,有哪些表,以及表里的數(shù)據(jù),但是,這不是元數(shù)據(jù)信息。HDFS最主要的是存儲hive的數(shù)據(jù)信息。
之前遇到的問題:當(dāng)退出后,切換到不同的目錄來進(jìn)入hive,發(fā)現(xiàn)庫和表沒有了,是因為,第一次從bin目錄進(jìn)入hive,會在bin目錄下創(chuàng)建一個metastore.db目錄,在這個目錄下,創(chuàng)建一個derby.log文件來存儲
元數(shù)據(jù)信息。這個元數(shù)據(jù)信息是基于bin目錄來創(chuàng)建的。而切換到其他目錄進(jìn)入hive時,查詢時不是基于bin目錄來查詢的,所有查不到元數(shù)據(jù)信息,導(dǎo)致查不到。這個問題是derby數(shù)據(jù)庫本身的問題,所以,我們不能用derby數(shù)據(jù)庫,此外,用derby數(shù)據(jù)庫,也不支持并發(fā),比如一個人在操作hive,如果此時有其他人想用hive,用不了。所以我們選擇用mysql數(shù)據(jù)庫。目前hive支持derby和mysql兩種數(shù)據(jù)庫。
Linux下mysql的安裝過程:Linux下的MySQL安裝
二、Hive的mysql配置步驟
①刪除HDFS中的/usr/hive
執(zhí)行:hadoop fs -rmr /user/hive(需要啟動hadoop)
②將mysql驅(qū)動包上傳至hive的安裝目錄的lib目錄下
我這里采用rz命令來上傳:mysql-connector-java-5.1.38-bin.jar
③在hive/conf添加配置文件,名字為:hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://hadoopalone:3306/hive?createDatabaseIfNotExist=true //mysql的url
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName //mysql的用戶名
root
javax.jdo.option.ConnectionPassword //mysql的密碼
root
如圖所示,添加如下配置
④進(jìn)入hive ,進(jìn)入bin目錄,執(zhí)行:sh? hive
如果出現(xiàn):
Access denied for user 'root'@'hadoop01' (using password: YES)這個錯誤,指的是當(dāng)前用戶操作mysql數(shù)據(jù)庫的權(quán)限不夠。
⑤進(jìn)入到mysql數(shù)據(jù)庫,進(jìn)行權(quán)限分配
執(zhí)行:grant all privileges on *.* to 'root'@'hadoopalone' identified by 'root' with grant option;
grant all on *.* to 'root'@'%' identified by 'root';
然后執(zhí)行:flush privileges;(注意分號)
⑥手動創(chuàng)建Hive數(shù)據(jù)庫
如果不事先在mysql里創(chuàng)建hive數(shù)據(jù)庫,在進(jìn)入hive時,mysql會自動創(chuàng)建hive數(shù)據(jù)庫。但是注意,因為我們之前配置過mysql的字符集為utf-8,所以這個自動創(chuàng)建的hive數(shù)據(jù)庫的字符集是utf-8的。
但是hive要求存儲元數(shù)據(jù)的字符集必須是iso8859-1。如果不是的話,hive會在創(chuàng)建表的時候報錯(先是卡一會,然后報錯)。
進(jìn)入mysql執(zhí)行:create database hive character set latin1;
⑦以上步驟都做完后,再次進(jìn)入mysql的hive數(shù)據(jù),發(fā)現(xiàn)有如下表:
⑧通過navicat連接mysql數(shù)據(jù)庫
⑨可以通過DBS 、TBLS、COLUMNS_V2這三張表來查看元數(shù)據(jù)信息。
DBS 存放的數(shù)據(jù)庫的元數(shù)據(jù)信息
TBLS存放的tables表信息
COLUMNS表存放的是列字段信息
此外,可以通過查看SDS表來查詢HDFS里的位置信息
至此,Hive配置mysql大功告成!如果有什么問題,大家一起留言討論。
總結(jié)
以上是生活随笔為你收集整理的hive 配置mysql_Hive的mysql安装配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何保证消息队列里的数据顺序执行?
- 下一篇: 垃圾oracle_第 14 章 垃圾回收