Hive是存在於Hadoop集群之上的數據倉庫,作為大數據處理時的主要工具,對於大數據開發人員的重要性不言而喻。當然要使用Hive倉庫的前提就是對於hive的安裝,hive的安裝是很簡單的過程,主要關注的就是對於hive的元數據的存儲位置的考慮。hive在安裝的時候,它會默認的將自己的元數據是存儲在自身帶的derby數據庫里,這對於一般的用戶的測試使用是相對方便的,但是由於它在使用的時候只滿足一個客戶端對它的訪問,所以在生產模式下,hive的元數據是一般的被保存在傳統的關系型數據庫mysql中。此時對於mysql的連接問題就是hive安裝的主要操作了。
在hive連接mysql數據庫的時候,通過下面的配置進行連接(針對於初級的聯系者):
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.253.4:3306/hive? createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> </configuration>
注意:連接的時候需要將mysql連接驅動mysql-connector-*.jar導入到hive的lib包下面,還有就是UserName和Password都必須是在mysql數據庫中真實存在,且對於mysql數據庫的操作權限都是具有的。
接着就是對於hive的啟動,啟動hive的時候,只要在命令行輸入hive就可以了。下面就是在啟動的時候可能會遇到的問題(當然如果是人品好的話可能不會遇到滴):
Caused by: java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://192.168.253.4:3306/hive?createDatabaseIfNotExist=true, username = hive. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
遇到這樣的問題可能的原因有:
⑴.如果hive連接的是遠程的mysql數據庫,除了上面的配置正確以外,此時就應該考慮的原因是:防火牆的問題!!!(說實話我就是在這里被坑的,我是通過我自己電腦上的虛擬機連接的電腦本地的mysql,原來是防火牆就關的,不知道啥時候就電腦自己給開了,所以就忽視了這個問題),只要將自己電腦的防火牆關閉就可以成功的啟動和創建元數據在mysql數據庫中了。
⑵.如果hive連接的是本地的mysql數據庫,這時就要考慮你自己在安裝mysql數據庫的時候,是不是創建了一個針對於mysql的用戶組,比如是mysql用戶組,此時的解決辦法就應該是將當前操作hive的用戶加入到mysql用戶組就解決問題。使用:usermod -a -G mysql 當前用戶 .
如果,您認為閱讀這篇博客讓您有些收獲,不妨點擊一下右下角的【推薦】。
如果,您希望更容易地發現我的新博客,不妨點擊一下左下角的【關注我】。
如果,您對我的博客所講述的內容有興趣,請繼續關注我的后續博客,我是【飛翔的小偉】,謝謝!
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。