手冊簡介

一個(gè)在hadoop中用來處理結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)倉庫基礎(chǔ)工具。

手冊說明

Hive是一個(gè)在Hadoop中用來處理結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)倉庫基礎(chǔ)工具。它架構(gòu)在Hadoop之上,用來進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行。

術(shù)語“大數(shù)據(jù)”是大型數(shù)據(jù)集,其中包括體積龐大,高速,以及各種由與日俱增的數(shù)據(jù)的集合。使用傳統(tǒng)的數(shù)據(jù)管理系統(tǒng)難以加工大型數(shù)據(jù)。因此,Apache軟件基金會(huì)推出了一款名為Hadoop的解決大數(shù)據(jù)管理和處理難題的框架。

Hadoop

Hadoop是一個(gè)在分布式環(huán)境中存儲(chǔ)和處理大型數(shù)據(jù)的開源框架。它包含兩個(gè)模塊,一個(gè)是MapReduce,另外一個(gè)是Hadoop分布式文件系統(tǒng)(HDFS)。

  • MapReduce:它是一種在大型集群上的并行編程模型,普通硬件可用于處理大型結(jié)構(gòu)化,半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
  • HDFS:Hadoop分布式文件系統(tǒng)是Hadoop的框架的一部分,用于存儲(chǔ)和處理數(shù)據(jù)集。它提供了一個(gè)在普通硬件上運(yùn)行的容錯(cuò)文件系統(tǒng)。

Hadoop生態(tài)系統(tǒng)包含了用于協(xié)助Hadoop的不同的子項(xiàng)目(工具)模塊,如Sqoop, Pig 和 Hive。

  • Sqoop: 它用來在HDFS和RDBMS之間導(dǎo)入和導(dǎo)出數(shù)據(jù)。
  • Pig: 它用來開發(fā)MapReduce操作的腳本程序語言的平臺(tái)。
  • Hive: 它用來開發(fā)SQL類型腳本,用于做MapReduce操作的平臺(tái)。

注:有多種方法來執(zhí)行MapReduce作業(yè):

  • 傳統(tǒng)的方法是使用Java MapReduce程序結(jié)構(gòu)化,半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
  • 針對MapReduce的腳本的方式,使用Pig來處理結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。
  • Hive查詢語言(HiveQL或HQL)采用Hive為MapReduce的處理結(jié)構(gòu)化數(shù)據(jù)。

Hive是什么?

Hive是一個(gè)在Hadoop中用來處理結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)倉庫基礎(chǔ)工具。它架構(gòu)在Hadoop之上。

最初,Hive是由Facebook開發(fā),后來由Apache軟件基金會(huì)開發(fā),并作為進(jìn)一步將它作為名義下Apache Hive為一個(gè)開源項(xiàng)目。它用在好多不同的公司。例如,亞馬遜在 Amazon Elastic MapReduce使用它。

Hive 不是

  • 一個(gè)關(guān)系數(shù)據(jù)庫
  • 一個(gè)設(shè)計(jì)用于聯(lián)機(jī)事務(wù)處理(OLTP)
  • 實(shí)時(shí)查詢和行級(jí)更新的語言

Hive特點(diǎn)

  • 它存儲(chǔ)架構(gòu)在一個(gè)數(shù)據(jù)庫中并處理數(shù)據(jù)到HDFS。
  • 它是專為OLAP設(shè)計(jì)。
  • 它提供SQL類型語言查詢叫HiveQL或HQL。
  • 它是低學(xué)習(xí)成本,快速和可擴(kuò)展的。

Hive架構(gòu)

下面的組件圖描繪了Hive的結(jié)構(gòu):

Hive Architecture

該組件圖包含不同的單元。下表描述每個(gè)單元:

單元名稱 操作
用戶接口/界面 Hive是一個(gè)數(shù)據(jù)倉庫基礎(chǔ)工具軟件,可以創(chuàng)建用戶和HDFS之間互動(dòng)。用戶界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服務(wù)器)。
元存儲(chǔ) Hive選擇各自的數(shù)據(jù)庫服務(wù)器,用以儲(chǔ)存表,數(shù)據(jù)庫,列模式或元數(shù)據(jù)表,它們的數(shù)據(jù)類型和HDFS映射。
HiveQL處理引擎      HiveQL的Metastore模式信息查詢類似于SQL的查詢上。這是傳統(tǒng)的方式進(jìn)行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ù)存儲(chǔ)技術(shù)是用于將數(shù)據(jù)存儲(chǔ)到文件系統(tǒng)。

Hive工作原理

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

How Hive Works

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

Step No. 操作
1 Execute Query

Hive接口,如命令行或Web UI發(fā)送查詢驅(qū)動(dòng)程序(任何數(shù)據(jù)庫驅(qū)動(dòng)程序,如JDBC,ODBC等)來執(zhí)行。

2 Get Plan

在驅(qū)動(dòng)程序幫助下查詢編譯器,分析查詢檢查語法和查詢計(jì)劃或查詢的要求。

3 Get Metadata

編譯器發(fā)送元數(shù)據(jù)請求到Metastore(任何數(shù)據(jù)庫)。

4 Send Metadata

Metastore發(fā)送元數(shù)據(jù),以編譯器的響應(yīng)。

5 Send Plan

編譯器檢查要求,并重新發(fā)送計(jì)劃給驅(qū)動(dòng)程序。到此為止,查詢解析和編譯完成。

6 Execute Plan

驅(qū)動(dòng)程序發(fā)送的執(zhí)行計(jì)劃到執(zhí)行引擎。

7 Execute Job

在內(nèi)部,執(zhí)行作業(yè)的過程是一個(gè)MapReduce工作。執(zhí)行引擎發(fā)送作業(yè)給JobTracker,在名稱節(jié)點(diǎn)并把它分配作業(yè)到TaskTracker,這是在數(shù)據(jù)節(jié)點(diǎn)。在這里,查詢執(zhí)行MapReduce工作。

7.1 Metadata Ops

與此同時(shí),在執(zhí)行時(shí),執(zhí)行引擎可以通過Metastore執(zhí)行元數(shù)據(jù)操作。

8 Fetch Result

執(zhí)行引擎接收來自數(shù)據(jù)節(jié)點(diǎn)的結(jié)果。

9 Send Results

執(zhí)行引擎發(fā)送這些結(jié)果值給驅(qū)動(dòng)程序。

10 Send Results

驅(qū)動(dòng)程序?qū)⒔Y(jié)果發(fā)送給Hive接口。




在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)