Hive學習之HiveServer2服務端配置與啟動,允許遠端連線
1、hive 命令列模式
直接輸入/hive/bin/hive的執行程式,或者輸入 hive –service cli 用於linux平臺命令列查詢,查詢語句基本跟MySQL查詢語句類似
2、hive web介面的啟動方式
hive –service hwi 用於通過瀏覽器來訪問hive
如果lib目錄下沒有hive-hwi-{version}.war包,我們要自己打包
官網下載原始碼包(比如1.10版本)
解壓
$ tar zxvf apache-hive-1.1.0.src.tar.gz
再進入 hwi 目錄,打包 war 檔案(注意命令末尾有一個點.)
#cd apache-hive-1.1.0-src/hwi
#jar cvfM0 hive-hwi-1.1.0.war -C web/ .
打包完成後,有了我們需要的 war 檔案,再複製到 $HIVE_HOME/lib 目錄下
#cp hive-hwi-1.1.0.war /usr/local/hive-1.1.0/lib
另外我們還需要拷貝一個 Java 的 tools.jar 到 $HIVE_HOME/lib 目錄下
cp /usr/local/jdk1.7.0_67/lib/tools.jar /usr/local/hive-1.1.0/lib
否則會出現類似於下面的錯誤(因為 JAVA_HOME 指到$JAVA_HOME/jre 下了,而其 lib下的 tools.jar 跟$JAVA_HOME/lib/tools.jar 不一樣,編譯的時候需要用到後者)
最後我們修改hive-site.xml檔案
啟動hwi,命令為: ./hive --service hwi
3、jdbc遠端連線hiveserver2
在之前的學習和實踐Hive中,使用的都是CLI或者hive –e的方式,該方式僅允許使用HiveQL執行查詢、更新等操作,並且該方式比較笨拙單一。幸好Hive提供了輕客戶端的實現,通過HiveServer或者HiveServer2,客戶端可以在不啟動CLI的情況下對Hive中的資料進行操作,兩者都允許遠端客戶端使用多種程式語言如Java、Python向Hive提交請求,取回結果。HiveServer或者HiveServer2都是基於Thrift的,但HiveSever有時被稱為Thrift
server,而HiveServer2卻不會。既然已經存在HiveServer為什麼還需要HiveServer2呢?這是因為HiveServer不能處理多於一個客戶端的併發請求,這是由於HiveServer使用的Thrift介面所導致的限制,不能通過修改HiveServer的程式碼修正。因此在Hive-0.11.0版本中重寫了HiveServer程式碼得到了HiveServer2,進而解決了該問題。HiveServer2支援多客戶端的併發和認證,為開放API客戶端如JDBC、ODBC提供了更好的支援。
hive-site.xml的配置。因為我這裡沒有配置連線hive的使用者名稱和密碼,所以在我的java程式碼連線Hive時,不用輸入使用者名稱和密碼。
先啟動元資料庫,在命令列中鍵入:hive --service metastore &
接下來開啟hiveserver2服務:
在命令列中鍵入:hive --service hiveserver2 &
注意檢視日誌是否報錯。