天天看點

hive 底層與資料庫互動原理

Hive 的查詢功能是由 hdfs 和 mapreduce 結合起來實作的,對于大規模資料查詢還是不建議在 hive 中,因為過大資料量會造成查詢十分緩慢。 Hive 與 mysql 的關系:隻是借用 mysql 來存儲 hive 中的表的中繼資料資訊,稱為 metastore.

1)使用者接口主要有三個:CLI,Client 和 WUI。

其中最常用的是CLI,Cli啟動的時候,會同時啟動一個Hive副本。Client是Hive的用戶端,

使用者連接配接至Hive Server。在啟動 Client模式的時候,需要指出Hive Server所在節點,并且在該節點啟動Hive Server。 WUI是通過浏覽器通路Hive。

2)Hive将中繼資料存儲在資料庫中,如mysql、derby。

Hive中的中繼資料包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的資料所在目錄等。

3)解釋器、編譯器、優化器完成HQL查詢語句從詞法分析、文法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS中,并在随後有MapReduce調用執行。

4)Hive的資料存儲在HDFS中,大部分的查詢、計算由MapReduce完成(包含*的查詢,比如select * from tbl不會生成MapRedcue任務)。