術(shù)語“大數(shù)據(jù)”是大型數(shù)據(jù)集,其中包括體積龐大,高速,以及各種由與日俱增的數(shù)據(jù)的集合。使用傳統(tǒng)的數(shù)據(jù)管理系統(tǒng),它是難以加工大型數(shù)據(jù)。因此,Apache軟件基金會推出了一款名為Hadoop的解決大數(shù)據(jù)管理和處理難題的框架。
Hadoop是一個開源框架來存儲和處理大型數(shù)據(jù)在分布式環(huán)境中。它包含兩個模塊,一個是MapReduce,另外一個是Hadoop分布式文件系統(tǒng)(HDFS)。
MapReduce:它是一種并行編程模型在大型集群普通硬件可用于處理大型結(jié)構(gòu)化,半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
HDFS:Hadoop分布式文件系統(tǒng)是Hadoop的框架的一部分,用于存儲和處理數(shù)據(jù)集。它提供了一個容錯文件系統(tǒng)在普通硬件上運行。
Hadoop生態(tài)系統(tǒng)包含了用于協(xié)助Hadoop的不同的子項目(工具)模塊,如Sqoop, Pig 和 Hive。
Sqoop: 它是用來在HDFS和RDBMS之間來回導(dǎo)入和導(dǎo)出數(shù)據(jù)。
Pig: 它是用于開發(fā)MapReduce操作的腳本程序語言的平臺。
Hive: 它是用來開發(fā)SQL類型腳本用于做MapReduce操作的平臺。
注:有多種方法來執(zhí)行MapReduce作業(yè):
Hive是一個數(shù)據(jù)倉庫基礎(chǔ)工具在Hadoop中用來處理結(jié)構(gòu)化數(shù)據(jù)。它架構(gòu)在Hadoop之上,總歸為大數(shù)據(jù),并使得查詢和分析方便。
最初,Hive是由Facebook開發(fā),后來由Apache軟件基金會開發(fā),并作為進一步將它作為名義下Apache Hive為一個開源項目。它用在好多不同的公司。例如,亞馬遜使用它在 Amazon Elastic MapReduce。
下面的組件圖描繪了Hive的結(jié)構(gòu):
該組件圖包含不同的單元。下表描述每個單元:
| 單元名稱 | 操作 |
|---|---|
| 用戶接口/界面 | Hive是一個數(shù)據(jù)倉庫基礎(chǔ)工具軟件,可以創(chuàng)建用戶和HDFS之間互動。用戶界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服務(wù)器)。 |
| 元存儲 | Hive選擇各自的數(shù)據(jù)庫服務(wù)器,用以儲存表,數(shù)據(jù)庫,列模式或元數(shù)據(jù)表,它們的數(shù)據(jù)類型和HDFS映射。 |
| HiveQL處理引擎 | HiveQL類似于SQL的查詢上Metastore模式信息。這是傳統(tǒng)的方式進行MapReduce程序的替代品之一。相反,使用Java編寫的MapReduce程序,可以編寫為MapReduce工作,并處理它的查詢。 |
| 執(zhí)行引擎 | HiveQL處理引擎和MapReduce的結(jié)合部分是由Hive執(zhí)行引擎。執(zhí)行引擎處理查詢并產(chǎn)生結(jié)果和MapReduce的結(jié)果一樣。它采用MapReduce方法。 |
| HDFS 或 HBASE | Hadoop的分布式文件系統(tǒng)或者HBASE數(shù)據(jù)存儲技術(shù)是用于將數(shù)據(jù)存儲到文件系統(tǒng)。 |
下圖描述了Hive 和Hadoop之間的工作流程。
下表定義Hive和Hadoop框架的交互方式:
| Step No. | 操作 |
|---|---|
| 1 |
Execute Query
Hive接口,如命令行或Web UI發(fā)送查詢驅(qū)動程序(任何數(shù)據(jù)庫驅(qū)動程序,如JDBC,ODBC等)來執(zhí)行。 |
| 2 |
Get Plan
在驅(qū)動程序幫助下查詢編譯器,分析查詢檢查語法和查詢計劃或查詢的要求。 |
| 3 |
Get Metadata
編譯器發(fā)送元數(shù)據(jù)請求到Metastore(任何數(shù)據(jù)庫)。 |
| 4 |
Send Metadata
Metastore發(fā)送元數(shù)據(jù),以編譯器的響應(yīng)。 |
| 5 |
Send Plan
編譯器檢查要求,并重新發(fā)送計劃給驅(qū)動程序。到此為止,查詢解析和編譯完成。 |
| 6 |
Execute Plan
驅(qū)動程序發(fā)送的執(zhí)行計劃到執(zhí)行引擎。 |
| 7 |
Execute Job
在內(nèi)部,執(zhí)行作業(yè)的過程是一個MapReduce工作。執(zhí)行引擎發(fā)送作業(yè)給JobTracker,在名稱節(jié)點并把它分配作業(yè)到TaskTracker,這是在數(shù)據(jù)節(jié)點。在這里,查詢執(zhí)行MapReduce工作。 |
| 7.1 |
Metadata Ops
與此同時,在執(zhí)行時,執(zhí)行引擎可以通過Metastore執(zhí)行元數(shù)據(jù)操作。 |
| 8 |
Fetch Result
執(zhí)行引擎接收來自數(shù)據(jù)節(jié)點的結(jié)果。 |
| 9 |
Send Results
執(zhí)行引擎發(fā)送這些結(jié)果值給驅(qū)動程序。 |
| 10 |
Send Results
驅(qū)動程序?qū)⒔Y(jié)果發(fā)送給Hive接口。 |