Hive學習記錄01—基本概念

Hive學習記錄01—基本概念

Hive基本概念

Hive

  • Hive:由 Facebook 開源用於解決海量結構化日誌的數據統計。
  • Hive 是基於 Hadoop 的一個數據倉庫工具,可以將結構化的數據文件映射爲一張表,並提供類 SQL 查詢功能。
  • 本質是:將 HQL 轉化成 MapReduce 程序

注意

  • 1)Hive 處理的數據存儲在 HDFS
  • 2)Hive 分析數據底層的默認實現是 MapReduce
  • 3)執行程序運行在 Yarn 上

Hive優缺點

優點

  1. 操作接口採用類 SQL 語法,提供快速開發的能力(簡單、容易上手)。
  2. 避免了去寫 MapReduce,減少開發人員的學習成本。
  3. Hive 的執行延遲比較高,因此 Hive 常用於數據分析,對實時性要求不高的場合。
  4. Hive 優勢在於處理大數據,對於處理小數據沒有優勢,因爲 Hive 的執行延遲比較
    高。
  5. Hive 支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。

缺點

  1. 迭代式算法無法表達
  2. 數據挖掘方面不擅長
  3. Hive 自動生成的 MapReduce 作業,通常情況下不夠智能化
  4. Hive 調優比較困難,粒度較粗

Hive架構原理

Hive架構原理

  1. 用戶接口:Client
    CLI(hive shell)、JDBC/ODBC(java 訪問 hive)、WEBUI(瀏覽器訪問 hive)
  2. 元數據:Metastore
    元數據包括:表名、表所屬的數據庫(默認是 default)、表的擁有者、列/分區字段、表
    的類型(是否是外部表)、表的數據所在目錄等;
    默認存儲在自帶的 derby 數據庫中,推薦使用 MySQL 存儲 Metastore
  3. Hadoop
    使用 HDFS 進行存儲,使用 MapReduce 進行計算。
  4. 驅動器:Driver
    (1) 解析器(SQL Parser):將 SQL 字符串轉換成抽象語法樹 AST,這一步一般都用
    第三方工具庫完成,比如 antlr;對 AST 進行語法分析,比如表是否存在、字段是否存
    在、SQL 語義是否有誤。
    (2) 編譯器(Physical Plan):將 AST 編譯生成邏輯執行計劃。
    (3) 優化器(Query Optimizer):對邏輯執行計劃進行優化。
    (4) 執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於 Hive 來
    說,就是 MR/Spark。

運行機制

Hive 通過給用戶提供的一系列交互接口,接收到用戶的指令(SQL),使用自己的 Driver,結合元數據(MetaStore),將這些指令翻譯成 MapReduce,提交到 Hadoop 中執行,最後,將執行返回的結果輸出到用戶交互接口。

Hive和傳統數據庫比較

  1. Hive採用的類似SQL的查詢語言HQL。雙方都可以用SQL進行操作
  2. Hive數據存儲在HDFS中。數據庫則將數據存儲在塊設備或本地文件系統中。
  3. Hive針對數據倉庫應用設計的,特點是讀多寫少。數據庫中數據需要常進行修改操作。
  4. Hive中沒有索引,不適合進行實時查詢。傳統數據庫存在索引。
  5. Hive查詢執行通過MapReduce。數據庫是通過自己的數據庫執行引擎。
  6. Hive掃描全表,延遲高。數據庫在一定數據量內延遲較低,在面對大容量數據規模,Hive處理速度會快。
  7. Hive拓展性高。傳統數據庫拓展性低。
  8. Hive支持大規模數據。傳統數據庫數據規模較小。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章