Squirrel 連接Hive
最近接手了一個數據分析的項目,開發語言是Hive。 看到見小夥伴們開發調試都在命令行上,經常需要window下編寫hive sql,再拷貝到linux中進行執行,效率感覺比較低。於是,想尋找一個客戶端工具來提供開發調試的效率。網上一問度娘,發現了Squirrel這個客戶端工具,但對於如何安裝、配置卻沒有一個完整描述,實在讓人惱火。 運維同事也表示不熟悉開發工具,看來還得“自給自足”啊。
2. 下載完成後,進行正常的安裝。安裝完成的界麵如下所示:
3. 配置Driver,如下圖所示:
填寫名稱
填寫URL: jdbc:hive2://192.168.142.128:10000/test (可先隨便寫一個地址)
填寫ClassName: org.apache.hive.jdbc.HiveDriver
重點問題,就是這裏的 class Path:
需要選中Extra Class Path,然後讓Hive的lib目錄下的所有jar包和 hadoop的lib目錄下的所有jar,都加入進來。
(雖然簡單粗暴,卻非常有效)
我個環境上,做了以上操作後,仍然缺少一個slf4j-api的jar包,隻有單獨下載並加入進來。
4. 新建連接,選擇剛剛創建的Driver,建立連接。如下所示:
這裏的重點是這個用戶名和密碼。
首先打開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. 開始使用客戶端進行連接
終於大功造成,記錄下關鍵步驟分享給大家。
最後更新:2017-11-09 14:34:01