數據倉庫工具--hive

數據倉庫工具--hive

Hive簡介

1.什麼是Hive

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,並提供類SQL查詢功能。

其本質是將SQL轉換為MapReduce的任務進行運算,底層由HDFS來提供數據的存儲,說白了hive可以理解為一個將SQL轉換為MapReduce的任務的工具,甚至更進一步可以說hive就是一個MapReduce的客戶端

為什麼使用Hive

Ø 直接使用hadoop所面臨的問題

人員學習成本太高

項目週期要求太短

MapReduce實現複雜查詢邏輯開發難度太大

Ø 為什麼要使用Hive

操作接口採用類SQL語法,提供快速開發的能力。

避免了去寫MapReduce,減少開發人員的學習成本。

功能擴展很方便。

Hive的特點

Ø 可擴展

Hive可以自由的擴展集群的規模,一般情況下不需要重啟服務。

Ø 延展性

Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。

Ø 容錯

良好的容錯性,節點出現問題SQL仍可完成執行。

2.Hive架構

架構圖


數據倉庫工具--hive

基本組成

用戶接口:包括CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。

元數據存儲:通常是存儲在關係數據庫如mysql/derby中。Hive 將元數據存儲在數據庫中。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。

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

3.Hive與Hadoop的關係

Hive利用HDFS存儲數據,利用MapReduce查詢分析數據


數據倉庫工具--hive

4.Hive與傳統數據庫對比
hive用於海量數據的離線數據分析


數據倉庫工具--hive

總結:hive具有sql數據庫的外表,但應用場景完全不同,hive只適合用來做批量數據統計分析

5.Hive的數據存儲

(1) Hive中所有的數據都存儲在 HDFS 中,沒有專門的數據存儲格式(可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE等)

SequenceFile是hadoop中的一種文件格式:

文件內容是以序列化的kv對象來組織的

(2)只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,Hive 就可以解析數據。

(3)Hive 中包含以下數據模型:DB、Table,External Table,Partition,Bucket。

Ø db:在hdfs中表現為${hive.metastore.warehouse.dir}目錄下一個文件夾

Ø table:在hdfs中表現所屬db目錄下一個文件夾

Ø external table:與table類似,不過其數據存放位置可以在任意指定路徑

Ø partition:在hdfs中表現為table目錄下的子目錄

Ø bucket:在hdfs中表現為同一個表目錄下根據hash散列之後的多個文件


分享到:


相關文章: