文章目錄
-
-
- Hive概述
- Hive和Hadoop的關系
- Hive和RDBMS對比
- Hive的資料存儲
- HIve優缺點
- 驅動(Driver):編譯器、優化器、執行器
-
Hive概述
-
hive是什麼?
基于Hadoop、資料倉庫、結構化、類SQL、MapReduce任務
- 架構
-
基本組成(使用者接口)
CLI:是一個和Hive通過指令行互動的接口。
thrift server(JDBC/ODBC):提供了可以從不同程式設計語言編寫的用戶端通路Hive的接口,支援身份驗證和多使用者并發通路。
Web UIHive Web Interface):Web接口,可以通過浏覽器通路Hive。
-
中繼資料存儲
1)中繼資料是什麼?
存儲在Hive中的資料的描述資訊
2)有哪些?
表的名、表的列和分區以及屬性(内部表和外部表)、表的資料所在目錄
3)存在哪兒?
自帶Derby。缺點:不适合多使用者操作,并且資料存儲目錄不确定
4)解決方案
存在自己建立的MySQL中(本地或遠端)
-
解釋器、編譯器、優化器、執行器
這四大元件完成 HQL 查詢語句從詞法分析、文法分析、編譯、優化以及生成查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,并随後由 MapReduce 調用執行
-
執行流程
HiveQL 通過指令行或者用戶端送出,經過 Compiler 編譯器,運用 MetaStore 中的中繼資料進行類型檢測和文法分析,生成一個邏輯方案(logical plan),然後通過的優化處理,産生一個 MapReduce 任務
Hive和Hadoop的關系
Hive 将 HQL 轉換成 MapReduce 執行, Hive 依賴于 HDFS 存儲資料
是以說 Hive 是基于 Hadoop 的一個資料倉庫工具,實質就是一款基于 HDFS 的 MapReduce 計算架構
Hive和RDBMS對比
Hive 具有 SQL 資料庫的外表,但應用場景完全不同, Hive 隻适合用來做批量海量資料統計分析,也就是資料倉庫
Hive的資料存儲
-
資料存儲格式
可支援 TextFile、SequenceFile、 ParquetFile、RCFILE 等
-
解析資料
隻需要在建立表的時候告訴 Hive 資料中的列分隔符和行分隔符
- 資料模型
-
db
在 HDFS 中表現為${hive.metastore.warehouse.dir}目錄下一個檔案夾
-
able
在 HDFS 中表現所屬 db 目錄下一個檔案夾
-
external table
與 table 類似,不過其資料存放位置可以在任意指定路徑
-
partition
在 HDFS 中表現為 table 目錄下的子目錄
-
bucket
在 hdfs 中表現為同一個表目錄下根據 hash 散列之後的多個檔案
HIve優缺點
優點:Hive作為一個基于Hadoop的資料倉庫工具,提供了簡單的SQL查詢功能,簡化了MapReduce的編寫操作,适用于大資料集的批處理作業,例如,網絡日志分析。
缺點:Hive的HQL表達能力有限,對于較複雜的運算HQL不易表達;另外,Hive具有高延遲性,不适合那些低延遲的應用,如:OLTP系統。它不提供實時的查詢和基于行級的資料更新操作,
驅動(Driver):編譯器、優化器、執行器
使用者送出SQL給HIve,由Driver負責解析SQL,在解析時會加載相關的中繼資料資訊,生成執行計劃,然後生成Job交給Hadoop運作,然後Driver将結果傳回給使用者。
- 編譯器:Hive的核心,負責SQL語句的文法、語義解析,生成查詢計劃。
1、語義解析器(ParseDriver),将查詢字元串轉換成解析樹表達式;
2、文法解析器(SemanticAnalyzer),将解析樹轉換成基于語句塊的内部查詢表達式;
3、邏輯計劃生成器(Logical Plan Generator),将内部查詢表達式轉換為邏輯計劃,這些計劃由邏輯操作樹組成,操作符是Hive的最小處理單元,每個操作符處理代表一 道HDFS操作或者是MR作業;
4、查詢計劃生成器(QueryPlan Generator),将邏輯計劃轉化成實體計劃(MR Job)。
生成的查詢計劃存儲在 HDFS 中,并在随後由 MapReduce 調用執行。
- 優化器:優化器是一個演化元件,目前它的規則是:列修剪,謂詞下壓。
- 執行器:編譯器将操作樹切分成一個Job鍊(DAG),執行器會順序執行其中所有的Job;如果Task鍊不存在依賴關系,可以采用并發執行的方式進行Job的執行。