Hive的metastore與hiveserver2

1. metastore

metastore有兩個意思,一是指存放元數據的地方,一般是用MySQL數據庫,二是指metastore server

1.1 元數據(metastore)

如果默認不配置元數據,那則使用本地Derby數據庫,這是個僅限單用戶訪問的數據庫,僅適用於入門,不推薦在開發或生產環境使用,因此建議使用關係型數據庫存放元數據

以下修改爲MySQL存放元數據:

<!-- MySQL URL -->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://127.0.0.1:3306/hive_metastore</value>
</property>
<!-- MySQL Driver-->
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- MySQL username-->
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>
<!-- MySQL password -->
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hkl0419!mysql</value>
</property>

1.2 metastore server

指定MySQL作爲元數據的數據庫,便於多用戶訪問,但每個hive客戶端均需要配置MySQL的連接信息,一是不安全,二是一旦MySQL有改動,則所有hive配置均需要改動,因此就有了metastore server,配置metastore server並啓動一個該服務後,其他hive客戶端僅需要配置連接到此服務即可

配置:

<!-- metastore server,默認9083 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://ubuntu:9083</value>
</property>

啓動服務:
nohup hive --service metastore 2>&1 &

2. hiveserver2

hiveserver2是一個服務端接口,使得其它客戶端(Java、beeline)可以連接到此服務執行HQL,得到返回結果

配置:

<!-- hiveserver2 連接的 host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>ubuntu</value>
</property>
<!-- hiveserver2 連接的端口號,默認10000 -->
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
</property>

啓動服務:
nohup hive --service hiveserver2 2>&1 &

3. metastore與hiveserver2的啓動關係

3.1 local metastore server

如果不配置metastore server,而直接啓動hiveserver2,那麼hiveserver2將會直連mysql,如果有多個hiveserver2,則都需要配置mysql連接信息,顯然不安全且繁瑣

3.2 remote metastore server

如果配置metastore server,則必須先啓動metastore server,且僅啓動一次,之後其他所有的hiveserver2都連到指定的metastore server即可

4. 常見的連接流程

bin/hive --> mysql --> hdfs
bin/hive --> metastore server --> mysql --> hdfs
beeline --> hiveserver2 --> metastore server --> mysql --> hdfs
其它客戶端 --> hiveserver2 --> metastore server --> mysql --> hdfs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章