閱讀283 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Squirrel 連接Hive

最近接手了一個數據分析的項目,開發語言是Hive。 看到見小夥伴們開發調試都在命令行上,經常需要window下編寫hive sql,再拷貝到linux中進行執行,效率感覺比較低。於是,想尋找一個客戶端工具來提供開發調試的效率。網上一問度娘,發現了Squirrel這個客戶端工具,但對於如何安裝、配置卻沒有一個完整描述,實在讓人惱火。 運維同事也表示不熟悉開發工具,看來還得“自給自足”啊。

1.       下載工具:https://sourceforge.net/projects/squirrel-sql/files/1-stable/3.8.0/squirrel-sql-3.8.0-standard.jar/download

2.       下載完成後,進行正常的安裝。安裝完成的界麵如下所示:

7023860020b30448c66d08ce5350fa2f29665b2e

3.       配置Driver,如下圖所示:

填寫名稱

填寫URL: jdbc:hive2://192.168.142.128:10000/test (可先隨便寫一個地址)

填寫ClassName: org.apache.hive.jdbc.HiveDriver

321e0130e3e6bc27ee0d9635b5e3f56964300e95

 

重點問題,就是這裏的 class Path:

需要選中Extra Class Path,然後讓Hive的lib目錄下的所有jar包和 hadoop的lib目錄下的所有jar,都加入進來。

(雖然簡單粗暴,卻非常有效)

我個環境上,做了以上操作後,仍然缺少一個slf4j-api的jar包,隻有單獨下載並加入進來。

 

4.       新建連接,選擇剛剛創建的Driver,建立連接。如下所示:

11404f6eb74e9faad91826945cd502a76d9db2bb

 

這裏的重點是這個用戶名和密碼。

首先打開hive的hive-site.xml,配置端口、用戶名和密碼。


<property>
  <name>hive.server2.thrift.port</name>
  <value>10000</value>
  <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
</property>
<property>
  <name>hive.server2.thrift.client.user</name>
  <value>hive</value>
  <description>Username to use against thrift client</description>
</property>
<property>
  <name>hive.server2.thrift.client.password</name>
  <value>123456</value>
  <description>Password to use against thrift client</description>
</property>


 

其次,打開hadoop的core-site.xml,配置代理用戶(我理解是代理Hive遠程連接去操作HDFS的用戶),新增如下內容

遠程連接時或使用 beeline連接,需要注意代理用戶,其它用戶無權限通過hive 操作hdfs

 


<property>  
    <name>hadoop.proxyuser.root.hosts</name>  
    <value>*</value>  
</property>  
<property>  
    <name>hadoop.proxyuser.root.groups</name>  
    <value>*</value>  
</property>  


 

然後設置hadoop安裝目錄下的tmp目錄的權限(操作係統本地目錄)

chmod 777   hadoop目錄上的tmp目錄   (否則連接時會報:(Connection refused) (state=08S01,code=0)

 

最後記得重啟hadoop和hiveServer2 。

重啟還需要設置一下hdfs目錄的權限(不是本地目錄)

 hdfs dfs -chmod -R 777 /tmp   (否則運行sql時會報:Permission denied: user=hive, access=EXECUTE, inode="/tmp":root:supergroup:drwx-----

 

開放操作係統的端口,否則仍然無法遠程連接

 firewall-cmd --add-port=10000/tcp

 

5.       開始使用客戶端進行連接

eca0410a8c2d5817a5c51be1a941e387ffa9cea4


edf4cbc40fdfb845ac47999f6ece96a9b39b4f25

8046c84910bc6207b236708e91d4c4f50c7710be

 

 

終於大功造成,記錄下關鍵步驟分享給大家。

最後更新:2017-11-09 14:34:01

  上一篇:go  [預告]第二次送域名活動即將開始
  下一篇:go  NLP 專題論文解讀:從 Chatbot 到 NER | PaperDaily #11