1. 程式人生 > >Hive學習之HiveServer2服務端配置與啟動,允許遠端連線

Hive學習之HiveServer2服務端配置與啟動,允許遠端連線

Hive有三種使用方式——CLI命令列,HWI(hie web interface)瀏覽器 以及 Thrift客戶端連線方式。

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 &
注意檢視日誌是否報錯。