術語“巨量資料”是大型資料集,其中包括體積龐大,高速,以及各種由與日俱增的資料的集合。使用傳統的資料管理系統,它是難以加工大型資料。因此,Apache軟體基金會推出了一款名為Hadoop的解決巨量資料管理和處理難題的框架。
Hadoop是一個開源框架來儲存和處理大型資料在分散式環境中。它包含兩個模組,一個是MapReduce,另外一個是Hadoop分散式檔案系統(HDFS)。
MapReduce:它是一種並行程式設計模型在大型叢集普通硬體可用於處理大型結構化,半結構化和非結構化資料。
HDFS:Hadoop分散式檔案系統是Hadoop的框架的一部分,用於儲存和處理資料集。它提供了一個容錯檔案系統在普通硬體上執行。
Hadoop生態系統包含了用於協助Hadoop的不同的子專案(工具)模組,如Sqoop, Pig 和 Hive。
Sqoop: 它是用來在HDFS和RDBMS之間來回匯入和匯出資料。
Pig: 它是用於開發MapReduce操作的指令碼程式語言的平台。
Hive: 它是用來開發SQL型別指令碼用於做MapReduce操作的平台。
註:有多種方法來執行MapReduce作業:
Hive是一個資料倉庫基礎工具在Hadoop中用來處理結構化資料。它架構在Hadoop之上,總歸為巨量資料,並使得查詢和分析方便。
最初,Hive是由Facebook開發,後來由Apache軟體基金會開發,並作為進一步將它作為名義下Apache Hive為一個開源專案。它用在好多不同的公司。例如,亞馬遜使用它在 Amazon Elastic MapReduce。
下面的元件圖描繪了Hive的結構:
該元件圖包含不同的單元。下表描述每個單元:
單元名稱 | 操作 |
---|---|
使用者介面/介面 | 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 和Hadoop之間的工作流程。
下表定義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介面。 |