使用beeline客戶端
與本地模式不同的是,遠程模式只需要安裝hive即可,不需要對其進行hive-site.xml的配置
啟動metastore服務
hive本地模式和遠程模式都要用的服務
啟動方式:
使用hive的bin目錄下的hive命令:bin/hive --service metabase
啟動hiveserver2服務
hiveserver2又簡稱 HS2 是hive遠程模式,beeline要用到的服務
不知道諸佬是否還記得我們之前在配置hadoop102的hive-site.xml時添加過一下這段code
<!-- H2S運行綁定host -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<!-- 此處的10000就是hiveserver2需要占用的端口需要保證在啟動此服務前此端口沒有被占用 -->
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop102</value>
</property>
這段code就是用來把hiveserver2(HS2)綁定到host(hadoop102)的,正常情況下,這些都是我們配置好的
啟動方式:
使用hive的bin目錄下的hive命令:bin/hive --service hiveserver2
hiveserver2服務啟動比較慢,可能會顯示幾個ID后才能完全啟動
啟動不成功會造成后續beeline客戶端連接不到hadoop102
檢查是否啟動成功的方式很簡單,就是看HS2的端口是否被HS2占用了,使用命令sudo netstat -anp|grep 10000
,在此命令查詢到任何信息前都可視作沒有啟動成功
使用beeline客戶端連接到hadoop102
還記得hadoop中的core-site.xml中的code嗎
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
用做整合hive
到此正常情況下,這些配置都是正常的,所以我們可以直接在集群打開,兩個服務啟動后連接hadoop102了
在hadoop103中運行beeline
在hive根目錄下使用bin/beeline
即可
進入beeline后使用命令! connect jdbc:hive2://hadoop102:10000
訪問1000端口來連接到hadoop102
會讓輸入賬號密碼,賬號密碼都是如上我們之前在hadoop102的core-site.xml中設置的,根據上面的code,賬號就是root,密碼就是空
回車
觀察到
恭喜連接成功了
如果連接失敗則可檢查上述的兩段代碼處是否配置正確,修改之后切記一定要重啟集群后再嘗試連接
但本蒟蒻在此wa了無數次,背后原因令人&%¥#@
我在登錄時輸入root和密碼空后顯示一堆錯誤
后來也沒查找到原因,但本蒟蒻注意到自己平時都是在使用cheetah這個用戶進行操作的,可能這里輸入root會有問題吧,於是我又回到core-site.xml中添加了cheetah用戶和密碼空,保存,重啟集群,再試一遍,過了!離譜,不管了
不管這里是用什么用戶登錄的,要確保此用戶對HDFS有讀寫權,這樣才能更改或查詢HDFS中的內容
番外_更加好的hivesql編程體驗
在beeline中編寫sql,沒有任何提示,很不方便
后續本蒟蒻會用DataGrip(DG)來繼續hive的學習
配置DataGrip
加載Apache Hive 啟動文件
Database欄一般在(DG)的側邊欄中
加載hive的驅動
注意驅動版本需要與自己的hive版本一致。
創建新會話
這樣就可以在會話中進行sql編寫了,至於其他的功能,就請諸佬探索吧
🎊\(\mathcal{The}\) \(\mathcal{End}\)🎉