章節內容
上一節我們完成了:
- Hive中數據導出:HDFS
- HQL操作
- 上傳內容至Hive、增刪改查等操作
背景介紹
這里是三臺公網云服務器,每臺 2C4G,搭建一個Hadoop的學習環境,供我學習。
之前已經在 VM 虛擬機上搭建過一次,但是沒留下筆記,這次趁著前幾天薅羊毛的3臺機器,趕緊嘗試在公網上搭建體驗一下。
注意,如果你和我一樣,打算用公網部署,那一定要做好防火墻策略,避免不必要的麻煩!!!
請大家都以學習為目的,也請不要對我的服務進行嗅探或者攻擊!!!
但是有一臺公網服務器我還運行著別的服務,比如前幾天發的:autodl-keeper 自己寫的小工具,防止AutoDL機器過期的。還跑著別的Web服務,所以只能擠出一臺 2C2G 的機器。那我的配置如下了:
- 2C4G 編號 h121
- 2C4G 編號 h122
- 2C2G 編號 h123
Metastore
在Hive具體的使用中,首先面臨的問題是如何定義表結構信息和結構化的數據映射成功。
所謂的映射指的是一種對應關系。在Hive中需要描述清楚表和文件之間的映射關系、列和字段之間的關系等等信息。
這描述映射關系的數據稱為Hive的元數據。
所以此數據很重要,因為只有通過查詢它才可以確定用戶編寫SQL和最終操作文件之間的關系。
Metastore三種形式
內嵌模式
內嵌模式是使用Derby數據庫來存儲元數據,而不需要額外起Metastore服務。數據庫和Metastore服務都嵌入在主HiveServer進程中。
該方案為默認,但一次只能和一個客戶端連接,適合實驗,不適合生產。
本地模式
本地模式不需要單獨啟動Metastore服務,而是和Hive在同一個進程里的Metastore服務。也就是說當啟動Hive服務時,內部會啟動一個Metastore服務。
遠程模式
遠程模式下,需要的單獨運行 Metastore服務,每個客戶端都在配置文件里配置連接到該Metastore的信息。(推薦生產環境使用)
配置環境
集群規劃
同步文件
之前我們完成了單節點的 Hive 部署和測試,現在要改成多集群的。
你可以使用類似于下面的方式,將 Hive 的安裝包等內容發送到別的節點上。
將之前的 Hive 文件拷貝到 h121、h122、h123中。
也就是現在要求我們集群中的三臺節點都要擁有Hive環境
你可以通過類似于 SCP 的指令完成文件的傳輸,或者用腳本分發工具也可以。
scp apache-hive-2.3.9-bin.tar.gz root@h121.wzk.icu:/opt/software
確保你的三臺機器都有了Hive的環境,同時不要忘記配置環境變量。
你需要回到之前的章節,完整一系列的配置。不然后續無法進行。
h121節點
h122節點
h123節點
配置注意
這里多嘮叨幾句,h121、h122、h123的 hive-site.xml 的內容是一樣的。
- Hive 環境變量!!!
- hive-site.xml 配置一樣!!!
- JDBC 驅動也別忘了!!!
啟動服務
h121 & h123
在 h121 和 h123 上啟動 MetaData 服務
# 啟動 metastore 服務
nohup hive --service metastore &
# 查詢9083端口(metastore服務占用的端口)
lsof -i:9083
可以看到服務已經正常的啟動了, 查詢到了端口服務。
h122
<!-- hive metastore 服務地址 -->
<property><name>hive.metastore.uris</name><value>thrift://h121.wzk.icu:9083,thrift://h123.wzk.icu:9083</value>
</property>
此時我們在 h122 上啟動 Hive
hive
SELECT * FROM emp;
查看連接
我們分別在 h121、h122、h123 上查看端口的信息
lsof -i:9083