hive并發調用的運行方式-個人經驗篇 - ggjucheng - 博客園
前言
使用hive,我們很多情況下會并發調用hive程序,將sql任務轉換成mapreuce提交到hadoop集群中,而在本人使用hive的過程中,發現并發調用hive有幾個問題,在這個和大家分享下.
正文
默認安裝hive,hive是使用derby內存數據庫保存hive的元數據,這樣是不可以并發調用hive的,需要配置為使用mysql保存hive的元數據。
?
運行hive,可以有以下訪問方式:
1.hiveserver :hive以thrift服務的服務器形式運行,允許不同的語言編寫客戶端進行訪問,通過thrift,jdbc,odbc連接器和hive服務器與hive通信,這種方式很適合java編程人員通過jdbc接口去訪問hive,但是在實踐中,發現并發調用時,很容易出現hiveserver無故宕機,沒有jvm的dump文件,hiveserver的程序也毫無輸出。
2.metastore :
2.1.內嵌metastore :默認情況下,metastore和hive是運行在同一個進程里,這種方式經過測試,在并發中是最穩定的,使用這種方式,暫時沒有出現問題。
2.2.遠程metastore :通過配置hive.metastore.local為false,讓metastore作為一個單獨的進程運行,hive客戶端都要連接遠程metastore才能執行任務,但是在實踐中,一樣很容易出現遠程metastore無故宕機,同樣沒有jvm的dump文件,遠程metastore程序也毫無輸出。
?
總結
個人經驗,如果需要并發調用hive,首先要配置hive的元數據為mysql數據庫,最好是通過內嵌metastore的方式去調用hive,通過執行 $HIVE_HOME/bin/hive -S -e "<hive sql>",再從管道獲取hive的輸出,是本人覺得最穩定安全的方式。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
