版權聲明:<—— 本文爲做者嘔心瀝血打造,若要轉載,請註明出處@http://blog.csdn.net/gamer_gyt <——html
執行bin/hive --service help 以下: python
一、cli:是Command Line Interface 的縮寫,是Hive的命令行界面,用的比較多,是默認服務,直接能夠在命令行裏使用mysql
二、hiveserver:這個可讓Hive以提供Thrift服務的服務器形式來運行,能夠容許許多個不一樣語言編寫的客戶端進行通訊,使用須要啓動HiveServer服務以和客戶端聯繫,咱們能夠經過設置HIVE_PORT環境變量來設置服務器所監聽的端口,在默認狀況下,端口號爲10000,這個能夠經過如下方式來啓動Hiverserver:linux
bin/hive --service hiveserver -p 10002程序員
其中-p參數也是用來指定監聽端口的web
三、hwi:其實就是hive web interface的縮寫它是hive的web藉口,是hive cli的一個web替代方案sql
四、jar:與hadoop jar等價的Hive接口,這是運行類路徑中同時包含Hadoop 和Hive類的Java應用程序的簡便方式apache
五、metastore:在默認的狀況下,metastore和hive服務運行在同一個進程中,使用這個服務,可讓metastore做爲一個單獨的進程運行,咱們能夠經過METASTOE——PORT來指定監聽的端口號編程
進入hive安裝目錄,輸入bin/hive的執行程序,或者輸入 hive –service cli
用於linux平臺命令行查詢,查詢語句基本跟mysql查詢語句相似
bin/hive –service hwi (& 表示後臺運行)
用於經過瀏覽器來訪問hive,感受沒多大用途,瀏覽器訪問地址是:127.0.0.1:9999/hwi
bin/hive –service hiveserver2 &(&表示後臺運行)
用java,python等程序實現經過jdbc等驅動的訪問hive就用這種起動方式了,這個是程序員最須要的方式了
二者都容許遠程客戶端使用多種編程語言,經過HiveServer或者HiveServer2,客戶端能夠在不啓動CLI的狀況下對Hive中的數據進行操做,連這個和都容許遠程客戶端使用多種編程語言如java,python等向hive提交請求,取回結果(從hive0.15起就再也不支持hiveserver了),可是在這裏咱們仍是要說一下hiveserver
HiveServer或者HiveServer2都是基於Thrift的,但HiveSever有時被稱爲Thrift server,而HiveServer2卻不會。既然已經存在HiveServer,爲何還須要HiveServer2呢?這是由於HiveServer不能處理多於一個客戶端的併發請求,這是因爲HiveServer使用的Thrift接口所致使的限制,不能經過修改HiveServer的代碼修正。所以在Hive-0.11.0版本中重寫了HiveServer代碼獲得了HiveServer2,進而解決了該問題。HiveServer2支持多客戶端的併發和認證,爲開放API客戶端如JDBC、ODBC提供更好的支持。
Hiveserver1 和hiveserver2的JDBC區別:
HiveServer version Connection URL Driver Class
HiveServer2 jdbc:hive2://: org.apache.hive.jdbc.HiveDriver
HiveServer1 jdbc:hive://: org.apache.hadoop.hive.jdbc.HiveDriver
HiveServer:
在命令行輸入hive --service hiveserver –help查看hiveserver的幫助信息:
啓動hiveserver服務,能夠得知默認hiveserver運行在端口10000,最小100工做線程,最大2147483647工做線程。
以上的hiveserver在hive1.2.1中並不會出現,官網的說法是:
HiveServer is scheduled to be removed from Hive releases starting Hive 0.15. See HIVE-6977. Please switch over to HiveServer2.
Hiveserver2
Hiveserver2容許在配置文件hive-site.xml中進行配置管理,具體的參數爲:
也能夠設置環境變量HIVE_SERVER2_THRIFT_BIND_HOST和HIVE_SERVER2_THRIFT_PORT覆蓋hive-site.xml設置的主機和端口號。從Hive-0.13.0開始,HiveServer2支持經過HTTP傳輸消息,該特性當客戶端和服務器之間存在代理中介時特別有用。與HTTP傳輸相關的參數以下:
啓動Hiveserver2有兩種方式,一種是上面已經介紹過的hive --service hiveserver2,另外一種更爲簡潔,爲hiveserver2。使用hive--service hiveserver2 –H或hive--service hiveserver2 –help查看幫助信息:
sudo vim hive-site.xml
1):配置監聽端口和路徑
<property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>192.168.48.130</value> </property>
2):設置impersonation
這樣hive server會以提交用戶的身份去執行語句,若是設置爲false,則會以起hive server daemon的admin user來執行語句
<property> <name>hive.server2.enable.doAs</name> <value>true</value> </property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://xxx.xxx.xxx.xxx:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to con
nect to remote metastore.</description>
</property>
5):hiveserver2的Web UI配置
Hive 2.0 之後才支持Web UI的,在之前的版本中並不支持
啓動服務:
1):啓動metastore
bin/hive --service metastore &
默認端口爲9083
2):啓動hiveserver2
bin/hive --service hiveserver2 &
3):測試
Web UI:http://192.168.48.130:10002/
使用beeline控制檯控制hiveserver2
啓動beeline :bin/beeline
鏈接:!connect jdbc:hive2://192.168.48.130:10000 hive hive
出現錯誤: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: master is not allowed to impersonate hive (state=,code=0)
解決辦法:http://www.aboutyun.com/blog-331-2956.html
PS:小編在這裏並無解決,由於這個beeline基本用不到,因此就暫時放放了,後期若是須要的話再來解決它