天天看點

Hive(1)初識Hive

文章目錄

      • Hive概述
      • Hive和Hadoop的關系
      • Hive和RDBMS對比
      • Hive的資料存儲
      • HIve優缺點
      • 驅動(Driver):編譯器、優化器、執行器

Hive概述

  1. hive是什麼?

    基于Hadoop、資料倉庫、結構化、類SQL、MapReduce任務

  2. 架構
    Hive(1)初識Hive
  • 基本組成(使用者接口)

    CLI:是一個和Hive通過指令行互動的接口。

    thrift server(JDBC/ODBC):提供了可以從不同程式設計語言編寫的用戶端通路Hive的接口,支援身份驗證和多使用者并發通路。

    Web UIHive Web Interface):Web接口,可以通過浏覽器通路Hive。

  • 中繼資料存儲

    1)中繼資料是什麼?

    存儲在Hive中的資料的描述資訊

    2)有哪些?

    表的名、表的列和分區以及屬性(内部表和外部表)、表的資料所在目錄

    3)存在哪兒?

    自帶Derby。缺點:不适合多使用者操作,并且資料存儲目錄不确定

    4)解決方案

    存在自己建立的MySQL中(本地或遠端)

  • 解釋器、編譯器、優化器、執行器

    這四大元件完成 HQL 查詢語句從詞法分析、文法分析、編譯、優化以及生成查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,并随後由 MapReduce 調用執行

  • 執行流程

    HiveQL 通過指令行或者用戶端送出,經過 Compiler 編譯器,運用 MetaStore 中的中繼資料進行類型檢測和文法分析,生成一個邏輯方案(logical plan),然後通過的優化處理,産生一個 MapReduce 任務

Hive和Hadoop的關系

Hive(1)初識Hive

Hive 将 HQL 轉換成 MapReduce 執行, Hive 依賴于 HDFS 存儲資料

是以說 Hive 是基于 Hadoop 的一個資料倉庫工具,實質就是一款基于 HDFS 的 MapReduce 計算架構

Hive和RDBMS對比

Hive(1)初識Hive

Hive 具有 SQL 資料庫的外表,但應用場景完全不同, Hive 隻适合用來做批量海量資料統計分析,也就是資料倉庫

Hive的資料存儲

  1. 資料存儲格式

    可支援 TextFile、SequenceFile、 ParquetFile、RCFILE 等

  2. 解析資料

    隻需要在建立表的時候告訴 Hive 資料中的列分隔符和行分隔符

  3. 資料模型
  • db

    在 HDFS 中表現為${hive.metastore.warehouse.dir}目錄下一個檔案夾

  • able

    在 HDFS 中表現所屬 db 目錄下一個檔案夾

  • external table

    與 table 類似,不過其資料存放位置可以在任意指定路徑

  • partition

    在 HDFS 中表現為 table 目錄下的子目錄

  • bucket

    在 hdfs 中表現為同一個表目錄下根據 hash 散列之後的多個檔案

HIve優缺點

優點:Hive作為一個基于Hadoop的資料倉庫工具,提供了簡單的SQL查詢功能,簡化了MapReduce的編寫操作,适用于大資料集的批處理作業,例如,網絡日志分析。

缺點:Hive的HQL表達能力有限,對于較複雜的運算HQL不易表達;另外,Hive具有高延遲性,不适合那些低延遲的應用,如:OLTP系統。它不提供實時的查詢和基于行級的資料更新操作,

驅動(Driver):編譯器、優化器、執行器

使用者送出SQL給HIve,由Driver負責解析SQL,在解析時會加載相關的中繼資料資訊,生成執行計劃,然後生成Job交給Hadoop運作,然後Driver将結果傳回給使用者。

  • 編譯器:Hive的核心,負責SQL語句的文法、語義解析,生成查詢計劃。

1、語義解析器(ParseDriver),将查詢字元串轉換成解析樹表達式;

2、文法解析器(SemanticAnalyzer),将解析樹轉換成基于語句塊的内部查詢表達式;

3、邏輯計劃生成器(Logical Plan Generator),将内部查詢表達式轉換為邏輯計劃,這些計劃由邏輯操作樹組成,操作符是Hive的最小處理單元,每個操作符處理代表一 道HDFS操作或者是MR作業;

4、查詢計劃生成器(QueryPlan Generator),将邏輯計劃轉化成實體計劃(MR Job)。

生成的查詢計劃存儲在 HDFS 中,并在随後由 MapReduce 調用執行。

  • 優化器:優化器是一個演化元件,目前它的規則是:列修剪,謂詞下壓。
  • 執行器:編譯器将操作樹切分成一個Job鍊(DAG),執行器會順序執行其中所有的Job;如果Task鍊不存在依賴關系,可以采用并發執行的方式進行Job的執行。

繼續閱讀