Hive架構
[toc]
概念
按照官網翻譯,Hive是一個使用SQL管理和使用基於分散式儲存的資料集的資料倉儲工具軟體。注意形容詞知道了幾個特點:
- 使用SQL
- 資料倉儲、管理資料集(表)
- 基於Hadoop
Hive的元件包括HCatalog和WebHCat。
- HCatalog是Hadoop的表和儲存管理層,它使具有不同資料處理工具(包括Pig和MapReduce)的使用者能夠更輕鬆地在網格上讀寫資料。
- WebHCat提供了一種服務,可用於執行Hadoop MapReduce(或YARN),Pig,Hive作業。還可以使用HTTP(REST樣式)介面執行Hive後設資料操作。
架構
照例先說下架構圖
這裡可以看到非常明確的元件關係。資料以檔案形式儲存在HDFS,執行期間使用者通過cli提交DDL 或者query SQL,DDL會與MetaStore互動,其中MetaStore負責儲存所有表資訊(meta),二querySQL會提交給Hive QL來做執行,這個通用資料庫都包含這樣的模組。其中包含sql解析,執行計劃生成和MR執行,會將sql以MR來執行。
MetaStore
MetaStore負責儲存所有的表schema和SerDe庫,還有表的HDFS地址等。Hive的表是以HDFS的檔案儲存的,資料模型如下:
執行
通常的sql引擎執行sql的能力其實沒有太多的要說的,hive會將sql解析為一個執行計劃來執行MapReduce,比如對於一個sql
select a,count(1) from t where c=1 group by a;
Hive會將其轉換為一個執行計劃比如下圖:
調優
因為本質上是分散式MapReduce模式,因此在寫Hive SQL時,我們要了解不同表的資料量和資料分佈,在group by聚合以及join操作時避免傾斜。Hive本身LanguageManuel[6]中有對於Join Optimization的介紹,包括了MapJoin的hint以及SMB join優化等。而阿里的ODPS(MaxCompute)服務也在2018年推出了Hash Clustering 和 Range Clustering特性。
總結
這是一篇非常簡略的筆記,因為本身hive就很簡單,但是具體數倉ETL研發過程中的變化和策略是非常多的。開篇後,希望後續有持續的積累和記錄。
圖片和內容引用
[4] https://www.slideshare.net/athusoo/hive-apachecon-2008-presentation?from_action=save
[5] https://www.slideshare.net/namit_jain/hive-demo-paper-at-vldb-2009
[6] https://cwiki.apache.org/confluence/display/Hive/LanguageManual
相關文章
- Hive之 hive架構Hive架構
- 初識Hive:3張圖瞭解Hive的資料型別、架構圖!Hive資料型別架構
- Hive簡介、應用場景及架構原理Hive架構
- Hive學習筆記 1 Hive體系結構Hive筆記
- 一文讀懂Hadoop、HBase、Hive、Spark分散式系統架構HadoopHiveSpark分散式架構
- 架構之:serverless架構架構Server
- 使用 Hive 構建資料庫Hive資料庫
- SaaS架構:流程架構分析架構
- 【細品架構4/100】架構之架構切分架構
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 單體架構&微服務架構&中臺服務架構架構微服務
- 架構之:資料流架構架構
- 前端架構之小小node架構前端架構
- 邏輯架構和物理架構架構
- 軟體架構與架構師架構
- 單體架構到垂直架構架構
- 架構架構
- 業務架構、資訊架構、技術架構三位一體架構
- 書籍:精益架構(敏捷架構 瘦架構 Lean Architecture)架構敏捷
- 架構演進之「微服務架構」架構微服務
- MySQL 高可用架構之 MMM 架構MySql架構
- 架構之:微服務架構漫談架構微服務
- 架構之:軟體架構漫談架構
- 遊戲架構 遊戲架構設計(8)遊戲架構
- 【架構分析】MESA (EGL/GLES)架構分析架構
- REST架構風格的架構元素REST架構
- 網站架構及架構演變網站架構
- 架構C01: 什麼是架構?為什麼做架構?架構師需要做什麼?架構
- Hive:資料倉儲構建步驟Hive
- HIVE隨手記——Hive命令(?$HIVE_HOME/bin/hive)Hive
- 按照業務領域畫資料架構圖 業務架構 資料架構架構
- 架構師眼中的高併發架構架構
- 架構設計之一——基礎架構架構
- Java架構-到底什麼才是業務架構?Java架構
- 軟體架構模式之微服務架構架構模式微服務
- LNMP架構與LNAMP架構的區別LNMP架構
- IT架構之IT架構模型——思維導圖架構模型
- bs架構與cs架構的區別架構