您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Hive架構設計及原理的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Hive架構設計及原理
1.什么是Hive:
Hive是構建在Hadoop之上的數據倉庫平臺,可以結構化的數據文件映射為一張數據庫表,并提供完整的SQL查詢,然后將SQL語句轉換為MapRuce任務進行運行,提交YARN平臺調度,優點學習成本之低,通過SQL語句快速實現簡單的MapReduce統計
Hive沒有專門的數據格式,可以很好的工作在Thrift之上,控制分隔符 允許用戶指定的數據格式
2.Hive運行流程及架構:
Hive創建的表的元信息存在于關系型數據庫之內, 默認情況下Hive元數組保存在內嵌的Derby數據庫,Derby只允許一個回話連接 不適合生產環境,關系型數據庫可以是MySQL做為元數據庫 Hive內部提供了很好的支持 只需要配置 URL Driver User )而表中的內容存在于HDFS之中,用戶輸入SQL語句之后進行編譯,然后在模板庫找到對應的模板組裝, MapReduce/Spark/Tez JOB運算,最后交給Yarn調度
3.Hive體系結構:
一、用戶接口主要有三個:CLI命令行,Client 和 Web UI
二、MetaStore: hive 的元數據結構存儲,可選用不同的關系型數據庫來存儲,通過配置文件修改、查看數據庫配置信息
三、解釋器、編譯器、優化器、執行器
Driver: hive核心驅動器接口類,銜接UI與內核的解析、優化、執行器的橋梁,生成的查詢計劃存儲在HDFS中,并在隨后由MapReduce調用執行
Driver 調用解釋器(Compiler)處理 HiveQL 字串,這些字串可能是一條 DDL、DML或查詢語句。編譯器將字符串轉化為策略(plan)。策略僅由元數據操作 和 HDFS 操作組成,元數據操作只包含 DDL 語句,HDFS 操作只包含 LOAD 語句。對插入和查詢而言,策略由 MapReduce 任務中的具有方向的非循環圖(directedacyclic graph,DAG)組成,具體流程如下。
1)解析器(parser):將查詢字符串轉化為解析樹表達式。
2)語義分析器(semantic analyzer):將解析樹表達式轉換為基于塊(block-based)的內部查詢表達式,將輸入表的模式(schema)信息從 metastore 中進行恢復。用這些信息驗證列名, 展開 SELECT * 以及類型檢查(固定類型轉換也包含在此檢查中)。
3)邏輯策略生成器(logical plan generator):將內部查詢表達式轉換為邏輯策略,這些策略由邏輯操作樹組成。
4)優化器(optimizer):通過邏輯策略構造多途徑并以不同方式重寫。優化器的功能如下。
將多 multiple join 合并為一個 multi-way join;
對join、group-by 和自定義的 map-reduce 操作重新進行劃分;
消減不必要的列;
在表掃描操作中推行使用斷言(predicate);
對于已分區的表,消減不必要的分區;
在抽樣(sampling)查詢中,消減不必要的桶。
此外,優化器還能增加局部聚合操作用于處理大分組聚合(grouped aggregations)和 增加再分區操作用于處理不對稱(skew)的分組聚合。
四、Hadoop
Hive的數據存儲在HDFS中大部分查詢有MapReduce完成(select * from table 不會生成MapReduce任務)
使用HQL作為查詢接口、HDFS作為存儲底層、mapReduce作為執行層, 基于Hadoop平臺解決了企業數據倉庫構建的核心技術問題
感謝各位的閱讀!關于“Hive架構設計及原理的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。