Hive 簡介


Hive 概念

  • Hive 由 Facebook 實現並開源
  • 是基於 Hadoop 的一個數據倉庫工具
  • 可以將結構化的數據映射為一張數據庫表
  • 並提供 HQL(Hive SQL)查詢功能
  • 底層數據是存儲在 HDFS 上
  • Hive 的本質是將 SQL 語句轉換為 MapReduce/Spark 任務運行
  • 使不熟悉 MapReduce 的用戶很方便地利用 HQL 處理和計算 HDFS 上的結構化的數據,適用於離線的批量數據計算

Hive 依賴於 HDFS 存儲數據,Hive 將 HQL 轉換成 MapReduce/Spark 執行,所以說 Hive 是基於 Hadoop 的一個數據倉庫工具(離線),實質就是一款基於 HDFS 的 MapReduce/Spark 計算框架,對存儲在 HDFS 中的數據進行分析和管理

Hive 特性

  • 支持通過 SQL 輕松訪問數據的工具,從而支持數據倉庫任務,如提取/轉換/加載(ETL)、報告和數據分析。
  • 支持多種數據格式(Parquet、OCR等)
  • 訪問直接存儲在 HDFS 或其他數據存儲系統( 如 Apache HBase )中的文件
  • 通過 Apache Tez、Apache Spark 或 MapReduce 執行查詢

Hive 架構

  • 元數據信息(MetaStore):HIVE 將用戶定義的庫、表結構等元數據信息存儲在本地 derby 數據庫或遠程 MySQL 數據庫中
  • SQL 解析器(SQL Parser):將 SQL 字符串轉換成抽象語法樹 AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤
  1. 編譯器(Physical Plan):將 AST 編譯生成邏輯執行計划

  2. 優化器(Query Optimizer):對邏輯執行計划進行優化

  • 執行器(Execution):把邏輯執行計划轉換成可以運行的物理計划。對於 Hive 來說,就是 MapReduce 或 Spark

HIVE 用途

直接使用 MapReduce 程序所面臨的問題:

  1、人員學習成本太高

  2、項目周期要求太短

  3、MapReduce實現復雜查詢邏輯開發難度太大

為什么要使用 Hive:

  1、更友好的接口:操作接口采用類 SQL 的語法,提供快速開發的能力

  2、更低的學習成本:避免了寫 MapReduce,減少開發人員的學習成本

  3、更好的擴展性:可自由擴展集群規模而無需重啟服務,還支持用戶自定義函數

解放大數據分析程序員,不用自己寫大量的 mr 程序來分析數據,只需要寫 sql 腳本即可構建大數據體系下的數據倉庫

Hive 特點

優點

  1、可擴展性:Hive 可以自由的擴展集群的規模,一般情況下不需要重啟服務

  2、延展性:Hive 支持自定義函數,用戶可以根據自己的需求來實現自己的函數

  3、容錯性:可以保障即使有節點出現問題,SQL 語句仍可完成執行

缺點

  1、Hive 不支持記錄級別的增刪改操作,但是用戶可以通過查詢生成新表或者將查詢結果導入到文件中

  2、Hive 的查詢延時很嚴重,因為 MapReduce Job 的啟動過程消耗很長時間,所以不能用在交互查詢系統中。

  3、Hive 不支持事務(因為沒有增刪改,所以主要用來做 OLAP(聯機分析處理),而不是 OLTP(聯機事務處理),這就是數據處理的兩大級別)。

總結

Hive 具有 SQL 數據庫的外表,但應用場景完全不同,Hive 只適合用來做海量離線數據統計分析,也就是數據倉庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM