Hive教學


Hive是一個資料倉庫基礎工具在Hadoop中用來處理結構化資料。它架構在Hadoop之上,總歸為巨量資料,並使得查詢和分析方便。並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。

術語“巨量資料”是大型資料集,其中包括體積龐大,高速,以及各種由與日俱增的資料的集合。使用傳統的資料管理系統,它是難以加工大型資料。因此,Apache軟體基金會推出了一款名為Hadoop的解決巨量資料管理和處理難題的框架。

Hadoop

Hadoop是一個開源框架來儲存和處理大型資料在分散式環境中。它包含兩個模組,一個是MapReduce,另外一個是Hadoop分散式檔案系統(HDFS)。

  • MapReduce:它是一種並行程式設計模型在大型叢集普通硬體可用於處理大型結構化,半結構化和非結構化資料。

  • HDFS:Hadoop分散式檔案系統是Hadoop的框架的一部分,用於儲存和處理資料集。它提供了一個容錯檔案系統在普通硬體上執行。

Hadoop生態系統包含了用於協助Hadoop的不同的子專案(工具)模組,如Sqoop, Pig 和 Hive。

  • Sqoop: 它是用來在HDFS和RDBMS之間來回匯入和匯出資料。

  • Pig: 它是用於開發MapReduce操作的指令碼程式語言的平台。

  • Hive: 它是用來開發SQL型別指令碼用於做MapReduce操作的平台。

註:有多種方法來執行MapReduce作業:

  • 傳統的方法是使用Java MapReduce程式結構化,半結構化和非結構化資料。
  • 針對MapReduce的指令碼的方式,使用Pig來處理結構化和半結構化資料。
  • Hive查詢語言(HiveQL或HQL)採用Hive為MapReduce的處理結構化資料。

Hive是什麼?

Hive是一個資料倉庫基礎工具在Hadoop中用來處理結構化資料。它架構在Hadoop之上,總歸為巨量資料,並使得查詢和分析方便。

最初,Hive是由Facebook開發,後來由Apache軟體基金會開發,並作為進一步將它作為名義下Apache Hive為一個開源專案。它用在好多不同的公司。例如,亞馬遜使用它在 Amazon Elastic MapReduce。

Hive 不是

  • 一個關聯式資料庫
  • 一個設計用於聯機事務處理(OLTP)
  • 實時查詢和行級更新的語言

Hiver特點

  • 它儲存架構在一個資料庫中並處理資料到HDFS。
  • 它是專為OLAP設計。
  • 它提供SQL型別語言查詢叫HiveQL或HQL。
  • 它是熟知,快速,可延伸和可延伸的。

Hive架構

下面的元件圖描繪了Hive的結構:

Hive Architecture

該元件圖包含不同的單元。下表描述每個單元:

單元名稱 操作
使用者介面/介面 Hive是一個資料倉庫基礎工具軟體,可以建立使用者和HDFS之間互動。使用者介面,Hive支援是Hive的Web UI,Hive命令列,HiveHD洞察(在Windows伺服器)。
元儲存 Hive選擇各自的資料庫伺服器,用以儲存表,資料庫,列模式或後設資料表,它們的資料型別和HDFS對映。
HiveQL處理引擎 HiveQL類似於SQL的查詢上Metastore模式資訊。這是傳統的方式進行MapReduce程式的替代品之一。相反,使用Java編寫的MapReduce程式,可以編寫為MapReduce工作,並處理它的查詢。
執行引擎 HiveQL處理引擎和MapReduce的結合部分是由Hive執行引擎。執行引擎處理查詢並產生結果和MapReduce的結果一樣。它採用MapReduce方法。
HDFS 或 HBASE Hadoop的分散式檔案系統或者HBASE資料儲存技術是用於將資料儲存到檔案系統。

Hive工作原理

下圖描述了Hive 和Hadoop之間的工作流程。

How Hive Works

下表定義Hive和Hadoop框架的互動方式:

Step No. 操作
1 Execute Query

Hive介面,如命令列或Web UI傳送查詢驅動程式(任何資料庫驅動程式,如JDBC,ODBC等)來執行。

2 Get Plan

在驅動程式幫助下查詢編譯器,分析查詢檢查語法和查詢計劃或查詢的要求。

3 Get Metadata

編譯器傳送後設資料請求到Metastore(任何資料庫)。

4 Send Metadata

Metastore傳送後設資料,以編譯器的響應。

5 Send Plan

編譯器檢查要求,並重新傳送計劃給驅動程式。到此為止,查詢解析和編譯完成。

6 Execute Plan

驅動程式傳送的執行計劃到執行引擎。

7 Execute Job

在內部,執行作業的過程是一個MapReduce工作。執行引擎傳送作業給JobTracker,在名稱節點並把它分配作業到TaskTracker,這是在資料節點。在這裡,查詢執行MapReduce工作。

7.1 Metadata Ops

與此同時,在執行時,執行引擎可以通過Metastore執行後設資料操作。

8 Fetch Result

執行引擎接收來自資料節點的結果。

9 Send Results

執行引擎傳送這些結果值給驅動程式。

10 Send Results

驅動程式將結果傳送給Hive介面。