hive體系結構

一、什麼是hivejava

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生態系統中地位以下圖所示:shell

wps5EFC.tmp

二、hive的架構數據庫

wps5EFD.tmp

用戶接口:client瀏覽器

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

元數據:metastore架構

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

Hadoop函數

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

驅動器:dirveroop

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

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

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

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

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

三、hive的優勢及使用場景

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

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

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

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

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

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

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

相關文章
相關標籤/搜索