hive體系結構


1、什么是hive

Hive是一個基於Hadoop的數據倉庫,可以將結構化數據映射成一張表,並提供類SQL的功能,最初由Facebook提供,使用HQL作為查詢接口、HDFS作為存儲底層、mapReduce作為執行層,設計目的是讓SQL技能良好,但Java技能較弱的分析師可以查詢海量數據,2008年facebook把Hive項目貢獻給Apache。Hive提供了比較完整的SQL功能(本質是將SQL轉換為MapReduce),自身最大的缺點就是執行速度慢。Hive有自身的元數據結構描述,可以使用MySql\ProstgreSql\oracle 等關系型數據庫來進行存儲,但請注意Hive中的所有數據都存儲在HDFS中。Hive具有比較好的靈活性和擴展性,支持UDF,自定義存儲格式,適合離線數據處理。Hive在hadoop生態系統中地位如下圖所示:

wps5EFC.tmp

2、hive的架構

wps5EFD.tmp

用戶接口:client

CLI(hive shell)、JDBC/ODBC(java訪問hive),WEBUI(瀏覽器訪問hive)

元數據:metastore

元數據包括:表名、表所屬數據庫、表的擁有者、列/分區字段、表的類型、表數據所在目錄。

Hadoop

使用hdfs進程數據存儲,運行在yarn上,使用mapreduce進行計算。

驅動器:dirver

包含:解析器、編譯器、優化器、執行器

解析器:將SQL字符串轉換成抽象語法樹AST,這一步一般都是用第三方工具庫完成,比如antlr;對AST語法樹進行分析,比如表否存在、字段是否存在、SQL語義是否有誤。

編譯器:將AST編譯生成邏輯執行計划。

優化器:對邏輯執行計划進行優化。

執行器:把邏輯執行計划轉換成物理執行計划。對於hive來說,就是MR/TEZ/Spark;

3、hive的優點及使用場景

1)操作接口使用SQL語法,提供快速開發的能力。

2)避免了去屑mapreduce,減少開發人員學習成本。

3)統一元數據管理,可與impala/spark等共享元數據。

4)因底層基於hadoop,易於擴展,支持自定義函數UDF。

5)數據離線處理,比如日志分析,海量數據結構化分析。

6)Hive執行延遲比較高,適合於做離線分析處理,不適合實時查詢。

7)Hive優勢在於處理大數據集,對於小數據集沒有優勢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM