Hive基礎知識梳理


Hive簡介

 

Hive是什么

  • Hive是構建在Hadoop之上的數據倉庫平台
  • Hive是一個SQL解析引擎,將SQL轉譯成MapReduce程序並在Hadoop上運行。
  • Hive是HDFS的一個文件目錄,一個表名對應一個目錄名,若該表是分區表,則分區值對應子目錄名。

     

    Hive的歷史由來

    image

     

    Hive體系結構

     

    Hive在Hadoop中的位置

    image

     

    Hive設計特征

    Hive 做為Hadoop 的數據倉庫處理工具,它所有的數據都存儲在Hadoop 兼容的文件系統中。

    Hive 在加載數據過程中不會對數據進行任何的修改,只是將數據移動到HDFS 中Hive 設定的目錄下,因此,Hive 不支持對數據的改寫和添加,所有的數據都是在加載的時候確定的。

    Hive 的設計特點如下:

  • 支持索引,加快數據查詢。
  • 不同的存儲類型,例如,純文本文件、HBase 中的文件。
  • 將元數據保存在關系數據庫中,減少了在查詢中執行語義檢查時間。
  • 可以直接使用存儲在Hadoop 文件系統中的數據。
  • 內置大量用戶函數UDF 來操作時間、字符串和其他的數據挖掘工具,支持用戶擴展UDF 函數來完成內置函數無法實現的操作。
  • 類SQL 的查詢方式,將SQL 查詢轉換為MapReduce 的job 在Hadoop集群上執行。
  • 編碼跟Hadoop同樣使用UTF-8字符集。
  •  

    Hive體系結構

    image

    用戶接口:

  • CLI:命令行界面,Cli 啟動的時候,會同時啟動一個 Hive 副本。
  • JDBC客戶端:封裝了Thrift,java應用程序,可以通過指定的主機和端口連接到在另一個進程中運行的hive服務器
  • ODBC客戶端:ODBC驅動允許支持ODBC協議的應用程序連接到Hive。
  • WUI 接口:是通過瀏覽器訪問 Hive
  • Thrift服務器:

  • 基於socket通訊,支持跨語言。Hive Thrift服務簡化了在多編程語言中運行Hive的命令。綁定支持C++,Java,PHP,Python和Ruby語言。
  • 解析器:

  • 編譯器:完成 HQL 語句從詞法分析、語法分析、編譯、優化以及執行計划的生成
  • 優化器是一個演化組件,當前它的規則是:列修剪,謂詞下推。
  • 執行器會順序執行所有的Job。如果Task鏈不存在依賴關系,可以采用並發執行的方式執行Job。
  • 元數據庫:

  • Hive的數據由兩部分組成:數據文件和元數據。元數據用於存放Hive庫的基礎信息,它存儲在關系數據庫中,如 mysql、derby。元數據包括:數據庫信息、表的名字,表的列和分區及其屬性,表的屬性,表的數據所在目錄等。
  • Hadoop:

  • Hive 的數據文件存儲在 HDFS 中,大部分的查詢由 MapReduce 完成。(對於包含 * 的查詢,比如 select * from tbl 不會生成 MapRedcue 作業)
  •  

    Hive運行機制

    image

    ① 用戶通過用戶接口連接Hive,發布Hive SQL

    ② Hive解析查詢並制定查詢計划

    ③ Hive將查詢轉換成MapReduce作業

    ④ Hive在Hadoop上執行MapReduce作業

     

    image

     

    Hive適用場景

     

    Hive的優勢

    • 解決了傳統關系數據庫在大數據處理上的瓶頸。適合大數據的批量處理
    • 充分利用集群的CPU計算資源、存儲資源,實現並行計算
    • Hive支持標准SQL語法,免去了編寫MR程序的過程,減少了開發成本
    • 具有良好的擴展性,拓展功能方便。

     

    Hive的缺點

    • Hive的HQL表達能力有限:有些復雜運算用HQL不易表達
    • Hive效率低:Hive自動生成MR作業,通常不夠智能;HQL調優困難,粒度較粗;可控性差。
    • 針對Hive運行效率低下的問題,促使人們去尋找一種更快,更具交互性的分析框架。 SparkSQL 的出現則有效的提高了Sql在Hadoop 上的分析運行效率。

     

    Hive的應用場景

    適用場景

    • 海量數據的存儲處理
    • 數據挖掘
    • 海量數據的離線分析

    不適用場景

    • 復雜的機器學習算法
    • 復雜的科學計算
    • 聯機交互式實時查詢

     

    Hive安裝

    參考:Hive偽分布式下安裝


    免責聲明!

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



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