一、Hive簡介
1.1 什么是Hive
Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類SQL查詢功能。
本質是將SQL轉化為MapReduce程序。
主要用來做離線數據分析,比直接用MapReduce開發效率更高。
1.2? 為什么用Hive
直接使用Hadoop MapReduce的學習成本太高。MapReduce實現復雜查詢邏輯開發難度太大。使用Hive操作接口類SQL語法,提供快速開發能力,避免了寫MapReduce,減少開發人員學習成本,功能擴展很方便。
二、Hive架構
1.1? Hive組件
用戶接口:? 包括CLI、JDBC/ODBC、WebGUI。其中CLI為shell命令行;JDBC/ODBC是Hive的Java實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。
元數據存儲:通常存儲在關系數據庫如MySQL/Derby中。hive將元數據存儲在數據庫中。hive中的元數據包括表的名字,表的列和分區及屬性,表的屬性(是否為外部表),表的數據所在目錄等。
解釋器、編譯器、優化器、執行器:完成HQL查詢語句從語法分析、詞法分析、編譯、優化及查詢激活的生成。生成的查詢計劃存儲在HDFS中,并在隨后有MapReduce調用執行。
1.2 Hive架構
2.3 Hive與Hadoop的關系
Hive利用HDFS存儲數據,利用MapReduce查詢分析數據。是一款基于Hadoop的數據倉庫工具。
三、Hive與傳統數據庫對比
Hive是數據倉庫工具,是面向分析的,不同于傳統數據庫。Hive用于海量數據的離線數據分析。hive具有sql數據庫的外表,但是應用場景不同。