Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 5 實(shí)訓(xùn)指導(dǎo)手冊(cè)_第1頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 5 實(shí)訓(xùn)指導(dǎo)手冊(cè)_第2頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 5 實(shí)訓(xùn)指導(dǎo)手冊(cè)_第3頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 5 實(shí)訓(xùn)指導(dǎo)手冊(cè)_第4頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 5 實(shí)訓(xùn)指導(dǎo)手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程名稱:Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)

章節(jié)名稱:Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive

1晾智酷道捷教育科技有限公司

2020年02月

目錄

一、實(shí)訓(xùn)目的2

二、實(shí)訓(xùn)方式...................................................................2

三、實(shí)訓(xùn)內(nèi)容....................................................................2

.更HIVE的安裝配置..........................................................2

<HIVE表的操作...........................................................41

四、實(shí)訓(xùn)環(huán)境...................................................................67

五、項(xiàng)目雷牌..................................................................68

六、評(píng)分標(biāo)準(zhǔn)..................................................................69

一、實(shí)訓(xùn)目的

了解了Hive的概念、Hive與關(guān)系型數(shù)據(jù)庫(kù)的異同、Hive的組件以及體系結(jié)構(gòu)等知識(shí)

后,為了讓學(xué)生掌握Hive的安裝配置和Hive表的相關(guān)操作,特制訂本項(xiàng)目實(shí)訓(xùn)指導(dǎo)手冊(cè)。

通過(guò)本項(xiàng)目課程的學(xué)習(xí),要求學(xué)生掌握并達(dá)成以下的目標(biāo):

>理解Hive的組件架構(gòu)和體系結(jié)構(gòu)。

>能夠熟練搭建Hive及其各個(gè)組件。

>掌握Hive表的創(chuàng)建和相關(guān)操作。

二、實(shí)訓(xùn)方式

項(xiàng)目實(shí)訓(xùn)采取理論+實(shí)戰(zhàn)的學(xué)習(xí)輔導(dǎo)形式,先理論后實(shí)戰(zhàn),循序漸進(jìn),以練為主。

具體分為兩個(gè)部分:實(shí)訓(xùn)基礎(chǔ)、實(shí)戰(zhàn)演練。

實(shí)訓(xùn)鄲出:教師帶領(lǐng)學(xué)生解析項(xiàng)目案例,回顧之前課堂所學(xué)知識(shí),了解Hive的概念、

Hive與關(guān)系型數(shù)據(jù)庫(kù)的異同、Hive的組件以及體系結(jié)構(gòu)等知識(shí)。

實(shí)戰(zhàn)演練:教師帶領(lǐng)學(xué)生實(shí)操完成Hive的安裝配置和Hive表的相關(guān)操作,通過(guò)案例

實(shí)戰(zhàn),進(jìn)一步鞏固所學(xué)知識(shí),快速掌握Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive的應(yīng)用。

三、實(shí)訓(xùn)內(nèi)容

.更Hive的安裝配置

1.Hive介紹

木節(jié)課我們學(xué)習(xí)Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive,首先要了解其概念、組件、體系結(jié)構(gòu)

以及應(yīng)用等,下面逐一進(jìn)行介紹。

(1)什么是Hive

Hive是基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)技術(shù),可以用來(lái)分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)

據(jù),并進(jìn)行ETL操作(提取、轉(zhuǎn)化、加載I

實(shí)際上Hive就是用來(lái)操作HDFS上的數(shù)據(jù)的工具。在Hive之前通過(guò)M叩Reduce或

HDFS的API也能夠?qū)Ψ植际轿募到y(tǒng)中的數(shù)據(jù)進(jìn)行訪問(wèn)和操作,那為什么還要開(kāi)發(fā)Hive

技術(shù)呢?主要是基于兩點(diǎn)原因:首先,由于M叩Reduce實(shí)現(xiàn)復(fù)雜,并且要求分析人員熟

悉Java語(yǔ)言的編寫(xiě),實(shí)現(xiàn)一MapReduce不僅要編寫(xiě)Map邏輯、Reduce邏輯,還要

將項(xiàng)目打包上傳到集群中,然后才能執(zhí)行程序的分析,這個(gè)過(guò)程比較麻煩,而且調(diào)試起來(lái)也

不夠便捷;其次,以前在傳統(tǒng)的數(shù)據(jù)分析中,數(shù)據(jù)都是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)里面的,當(dāng)時(shí)就有

很多熟悉SQL語(yǔ)言的數(shù)據(jù)分析人員通過(guò)SQL語(yǔ)言對(duì)關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行分析,那么如

果HDFS上的數(shù)據(jù)也能像關(guān)系數(shù)據(jù)庫(kù)一樣通過(guò)SQL或者類似于SQL語(yǔ)言的方式來(lái)進(jìn)行分析

的話,很多以前傳統(tǒng)的數(shù)據(jù)分析人員就能非常容易地轉(zhuǎn)到大數(shù)據(jù)分析行業(yè)來(lái),這對(duì)整個(gè)大數(shù)

據(jù)分析的工作會(huì)非常有利。基于以上兩點(diǎn)原因,一些開(kāi)發(fā)人員就開(kāi)發(fā)了Hive技術(shù)框架,最

早這個(gè)框架是由Facebook實(shí)現(xiàn)的,并且在Apache上進(jìn)行了開(kāi)源。

Hive的主要功能就是能夠把結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提

供了類似SQL的查詢功能。

(2)Hive與關(guān)系型數(shù)據(jù)庫(kù)的差異

Hive既然支持SQL查詢,下面我們就來(lái)了解一下它與關(guān)系型數(shù)據(jù)庫(kù)的差異,可以通過(guò)

如下所示的表1來(lái)對(duì)比加深理解。

表1Hive與關(guān)系型數(shù)據(jù)庫(kù)的差異

區(qū)別Hive關(guān)系型數(shù)據(jù)庫(kù)

直詢語(yǔ)言HQLSQL

數(shù)據(jù)存儲(chǔ)位置HDFS本地文件系統(tǒng)

數(shù)據(jù)格式判斷查詢時(shí)判斷插入時(shí)判斷

MRExecutor

執(zhí)行延遲高低

處理數(shù)據(jù)規(guī)模大小

從表1可以看出Hive與關(guān)系型數(shù)據(jù)庫(kù)的差異主要表現(xiàn)在以下6點(diǎn),下面分別進(jìn)行分析。

查詢語(yǔ)言不同。關(guān)系型數(shù)據(jù)庫(kù)的查詢語(yǔ)言為SQL語(yǔ)言,Hive的查詢語(yǔ)言是類似SQL

語(yǔ)言的HQL。

數(shù)據(jù)存儲(chǔ)位置不同。Hive的數(shù)據(jù)是存儲(chǔ)在HDFS分布式系統(tǒng)之上的,關(guān)系型數(shù)據(jù)庫(kù)的

數(shù)據(jù)存儲(chǔ)在操作系統(tǒng)的本地文件系統(tǒng)上。

數(shù)據(jù)格式判斷不同。Hive的數(shù)據(jù)在直詢的時(shí)候才進(jìn)行數(shù)據(jù)格式的判斷;關(guān)系型數(shù)據(jù)庫(kù)

的數(shù)據(jù)則比較嚴(yán)謹(jǐn),在插入的時(shí)候就會(huì)進(jìn)行數(shù)據(jù)格式的判斷。

執(zhí)行不同。Hive的直詢操作是轉(zhuǎn)化為底層的MapReduce執(zhí)行的關(guān)系型數(shù)據(jù)庫(kù)的SQL

操作是通過(guò)底層的執(zhí)行器Executor執(zhí)行的。

執(zhí)行延遲不同。Hive查詢操作的速度比較慢,延遲性比較高,不能做到實(shí)時(shí)查詢;關(guān)

系型數(shù)據(jù)庫(kù)查詢延遲比鈿氐,可以做到實(shí)時(shí)查詢。

處理數(shù)據(jù)規(guī)模不同.Hivl數(shù)據(jù)處理規(guī)模非常大,是針對(duì)大數(shù)據(jù)的數(shù)據(jù)倉(cāng)庫(kù),能夠處理

海量數(shù)據(jù);關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)處理規(guī)模達(dá)不到海量級(jí)別,只適合傳統(tǒng)數(shù)據(jù)的處理。

(3)Hive組件總體框圖

了解了Hive的概念以及Hive與關(guān)系型數(shù)據(jù)庫(kù)的差異后,再來(lái)了解一下Hive組件的總

體框圖,通過(guò)如下所示的圖1從宏觀的角度來(lái)了解一下Hive的工作原理。

圖1Hive組件總體框圖

從上面的Hive組件總體框圖中可以看出Hive提供了CLI命令行的方式對(duì)HDFS中的

數(shù)據(jù)進(jìn)行訪問(wèn)和操作同時(shí)也提供了Beeline和HiveServer2組件的方式訪問(wèn)底層的數(shù)據(jù)。

訪問(wèn)數(shù)據(jù)首先必須知道數(shù)據(jù)存儲(chǔ)的位置,對(duì)此可以通過(guò)Hive提供的HCatalog元數(shù)據(jù)服務(wù)

來(lái)獲取數(shù)據(jù)存儲(chǔ)的信息,獲得存儲(chǔ)信息之后就可以通過(guò)相應(yīng)的計(jì)算引擎,根據(jù)YARN計(jì)算

資源分配框架對(duì)HDFS中的數(shù)據(jù)進(jìn)行操作了。Hive支持的數(shù)據(jù)計(jì)算引擎有多種,默認(rèn)為

MapReduce,但同時(shí)也支持Spark和TEZ計(jì)算引擎所以說(shuō)Hive的功能還是非常強(qiáng)大的。

(4)Hive的體系結(jié)構(gòu)

下面我們?cè)偻ㄟ^(guò)如下所示的圖2來(lái)看一下Hive的體系結(jié)構(gòu),進(jìn)一步從更微觀的角度了

解Hive的工作原理。

HiveclientsHiveservicesHiv晤陶(H十算

Metastore

ThriftHiveThrift

Metastoredatabase

applicatoinClient

/

FileSystem|

JDBCHiveJDBCHive

Driver

applicationDriverServer

\_________*

Hadoop

ODBCHiveODBCHiveWebExecutioncluster

applicationDriverInterfaceEngine|,

圖2Hive的體系結(jié)構(gòu)

圖中的左側(cè)提供了一些客戶端的API機(jī)制,可以通過(guò)三種協(xié)議訪問(wèn)Hive數(shù)據(jù),一種是

ThriftRPC的協(xié)議,第二個(gè)是JDBC的協(xié)議,第三個(gè)是ODBC的協(xié)議,這三種協(xié)議通過(guò)客

戶端的API封裝之后,以代碼的方式借助它里面的HiveServer組件,通過(guò)相關(guān)的驅(qū)動(dòng)類

即可訪問(wèn)底層的元數(shù)據(jù)服務(wù)。也可以調(diào)用分布式文件系統(tǒng)的FileSystem類,包括一些計(jì)算

引擎的API,對(duì)Hadoop中的數(shù)據(jù)進(jìn)行分析和處理。

除了客戶端API的方式訪問(wèn)Hive數(shù)據(jù)外,還提供了一個(gè)命令行的方式,也就是圖2中

中間部分左上角的CLI的方式,以及圖中黃色的部分通過(guò)瀏覽器接口進(jìn)行訪問(wèn)。

(5)Hive的應(yīng)用

了解了Hive的組件和體系結(jié)構(gòu)后,下面我們?cè)賮?lái)看一下Hive的具體應(yīng)用場(chǎng)景。Hive

目前主要應(yīng)用于以下幾個(gè)方面:一是數(shù)據(jù)倉(cāng)庫(kù)ETL任務(wù),當(dāng)然這個(gè)數(shù)據(jù)倉(cāng)庫(kù)是指大數(shù)據(jù)的

數(shù)據(jù)倉(cāng)庫(kù);二是對(duì)網(wǎng)站日志的分析,因?yàn)楝F(xiàn)在互聯(lián)網(wǎng)公司非常多,互聯(lián)網(wǎng)的訪問(wèn)數(shù)據(jù)量也非

常大,所以也需要通過(guò)Hive進(jìn)行數(shù)據(jù)分析;三是海量數(shù)據(jù)的離線分析,也就是只要適合

MapReduce工作的場(chǎng)景,一般Hive都會(huì)適用。

2.安裝Hive

Hive的安裝可以按照以下三個(gè)步驟進(jìn)行,具體介紹如下。

第一步,確定Hive的版本。因?yàn)镠ive是在Hadoop上使用的,所以Hive的版本需

要與當(dāng)前使用的Hadoop版本匹配。

第二步,解壓安裝包。下載匹配的Hive版本后要解壓安裝包,解壓命令為tarxzf

apache-hive-x.yz-bin.tar.gzo

第三步,設(shè)置環(huán)境變量。首先配置HIVE_HOME環(huán)境變量為exportHIVE_HOME={安

裝目錄路徑};然后將HlVt.HOMt卜的bin目錄配置到PAIH目錄卜,具體為export

PATH=$PATH:$HIVE_HOME/bino

這樣就完成了Hive最簡(jiǎn)單的安裝,下面我們通過(guò)實(shí)際操作來(lái)熟悉這個(gè)安裝的過(guò)程。

打開(kāi)Hive官網(wǎng),在頁(yè)面左側(cè)的菜單列表中有一個(gè)Downloads鏈接,單擊該鏈接進(jìn)入

DOWNLOADS頁(yè)面,在該頁(yè)面中單擊Downloadareleasenow!鏈接,進(jìn)入新的頁(yè)面,

該頁(yè)面中提供了Hive安裝包的下載地址,單擊該地址鏈接,進(jìn)入Indexof/hive頁(yè)面,這

里提供了很多版本的Hive安裝包,如圖3、圖4所示。

'____________________________________________

GENERALDOWNLOADS

£::ioads|

ReleasesmaybedownloadedfromApachemirrors:

PrivacyPolicyDownloadai?理asenow!|?

DOCUMENTATION

LanguageManualOnthemirror,allrecentreleasesareavailable,butarenotguaranty

Javadoc

圖3單擊Downloads鏈接進(jìn)入DOWNLOADS頁(yè)面

WesuggestThefollowingmirrorsiteforyourdownload:

http:〃/hive/

Othermirrorsitesaresuggestedbelow.

Itisessentialthatyouverifytheintegrityofthedownloadecfileus:ngthePGPsignature(.as

PleaseonlyusethebackupmirrorstodownloadKEYS.PGPsignaturesandhashes(SHA'etc)

HTTP

/hive/

http:加pacheda趣gZhivaZ|?

http:〃/hive/

匿4單擊Hive安裝包的下載地址鏈接

目前Hive的最新版本為hive-3.1.2,這個(gè)版本是與hadoop-3版本相匹配的,而這里

我們使用的是hadoop-2.9.2版本,與其匹配的是hive-2.3.6版本,所以單擊hive-2.3.6

版本的鏈接,進(jìn)入Indexof/hive/hive-2.3.6頁(yè)面,右鍵單擊下載的鏈接地址

apache-hive-23.6-bin.tar.gz,在快捷菜單中選擇"復(fù)制鏈接地址",如圖5、圖6所示。

Indexof/hive

心儂LastmodifiedSizeDescription

ParentDireclorv

二hivo-1.2,2/

2018-05-0413:51-

-lhive-2.3史/2019-08-2211:53

3hive-3,◎2019-08-2613:21-

hi0.0/2018~06-0711:12-

Jhive-storaae-2.6.1/2018-05-1115:26-

ZJhive-stoc-2.7.1/2019-12-0109:42-

Jstable-2/2019-08-2211:53-

圖5單擊hive-236版本鏈接

Indexof/hive/hive-2.3.6

在新標(biāo)卷頁(yè)中打開(kāi)比接(T)

在新窗口中打開(kāi)施接(W)

在常身向口中打開(kāi)道接(G)80

鏈接另存為;K)…

艮制造,警址(E)

險(xiǎn)查(N)Ctrl+Shift+I

圖6復(fù)制鏈接t也址

打開(kāi)客戶端工具,選擇0主機(jī)(node3),輸入pwd,按下Enter鍵,輸

出結(jié)果顯示該主機(jī)當(dāng)前處在opt目錄下,在該目錄下下載安裝包即可。通過(guò)Linux的wget

命令下載,輸入wget,然后粘貼之前復(fù)制的下載鏈接地址,完整命令為wgethttp:

///hive/hive-2.3.6/apache-hive-2.3.6-bin.tar.gz,按下Enter鍵,即可

下載安裝包,下載完成后如圖7所示。

16M44192.16M4.9flK.16M4.10X

[rootvnode3optj#pwd

/opt[------------------------------------------------------------------------------------------1

[root?node3opt]#|wgethttp;//apache.claz.org/h3y£/hiyy-2.3.6/apache-hi”-2.3.6-b1p:tar.gz

--2019-12-2415:So!I0—~http://apache,c1az.org,n1Vfl/MV8-2.3.S/apaChV^HtVV^Z.3.B-B1HVVarTgz

Resolving()...34

connectingto(apache,claz.org)34|:80...connected.

HTTPrequestsent,awaitingresponse...302Found

Location:http://10.255.2S0.28/Tiles/60470O00l0B46693/ni1rror.bit./apache/hive/hive-2.3.6/aj

following]

--2019-12-2415:56:10—http://10.255.250.28/f11es/6047000010B46€93/?irror.b1t.edu.cn/apache/h1>

.6-bin.tar.gz

Connectingto8:80...connected.

HTTPrequestsent,awaitingresponse...200OK

Length:232225538(221M)[application/octet-strearn]

savingto:t<tfipache-hive-2.3.6-bin.tar.qzfc?;

100%[--------------------------------------------------------------------------------------------------------------------------------------------]232,2;

2019-12-2415:56:30(11.2MB/s)-tKtfipache-hive-2.3.6-bin.tar.gzt<saved[232225538/232225538]

[roorftnadp)opr]?

圖7下載安裝包

輸入tarxzvfapache-hive-2.3.6-bin.tar.gz命令,按下Enter鍵解壓安裝包。解壓完

成后輸入cdapache-hive-23.6-bin命令,按下Enter鍵進(jìn)入安裝目錄下;然后輸入pwd

命令,按下Enter鍵顯示當(dāng)前目錄所在路徑,復(fù)制該路徑,如圖8所示。

apache-hive-23.e-bin/hcatalog/share/webhcat/svr/Hb/^axb-Impl-Z.2.3-1^jar

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/^ackson-core-asl-l.9.13.jar

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/]ersey-core-1.14.jar

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/iersey-servlet-l.14.jar

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/n1ve-webhcat-2.3.6.jar

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/wadl-resourcedoc-doclet-1.4.jar

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/co?nmons-exec-l.1.iar

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/jetty-all-server-7.6.0.V2O12O127.j

apache-hive-23.6-bin/hcatalog/share/webhcat/svr/lib/jul-to-slf4j-1.7.10.jar

apache-hive-23.6-b1n/hcatalog/share/webhcat/java-client/hi7e-i*eDhcat-java-client-2.3.€

[root?node3opt]#cdapache-hive-2.3.6-bin

[root@node3apache-hive-2.3.6-bin]#pwd

Lrootgnode3apache-h1ve-2.3.6-bin]#

圖8復(fù)制安裝目錄路徑

輸入vi/etc/profile命令,按下Enter鍵,進(jìn)入etc目錄下的profile文件,將光標(biāo)移

到最下面,在倒數(shù)第二行位置插入HIVE_HOME環(huán)境變量的設(shè)置,即輸入export

HIVE_HOME=/opt/apache-hive-2.33-bin,也就是將HIVE_HOME指向前面復(fù)制的安裝

目錄。然后在最后一行的PATH路徑下添加HIVE_HOME的bin目錄,即在最后一行的后

面輸入:$HIVE_HOME/bin即可。這樣配置工作就完成了,輸入wq命令,按下Enter鍵

保存退出,如圖9所示。

exportJAVA_H0ME-/usr/local/jdkl.8.0_161

exportJRE_H0ME-$3AVXk_H0ME/jre

exportPATH-$PATH:$JAVA_HOM£/bin:$JRE_HOME

exportCLASSPATH-5JAVA_HOME八ib/dt.jar:SJAVA_HQME/11b/tools.jar

exportHAnnr>P_Hr*.<c-nirhadnnnhadnnn-?QQ

exportHIVE_H^'?.wache-hive-?.3.6-bin.■

exjxirtPATH-SPATH:$HADOOP_HOME/bin:$HADOOP_HOME/sb1n:/opt/zookeeper-3.4.6/bi->:$HIVE_HO**Ebin

"/etc/profile"91L.2395cwritten

[root>hode3apache-hive-2.3.6-b1n]?■

圖9設(shè)置環(huán)境變量

配置工作完成后下面進(jìn)行測(cè)試。首先輸入source/etc/profile,按下Enter鍵,將新添

加的環(huán)境變量激活;然后輸入echo$HIVE_HOME,接下Enter■鍵,直看是否能夠正常輸

出HIVE.HOME,結(jié)果顯示能夠正常輸出,證明前面的配置沒(méi)有錯(cuò)誤,如圖10所示。

exportHADOOP_HOME-/usr/hadoop/hadoop-2.9.2

exportHlVE_HOME-/opt/apache-nive-2.3.6-bin

exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/opt/zookeeper-3.4.6

"/etc/profile"91L,2395cwritten一…

[root@node3apache-hive-2.3.6-binl#source7etc7profile1

frootgnode3apache-hive-2.3會(huì)bin1川echoHOMEI

octaoache-hive-2.3.6-b-frT2

[rdot@hode3apache-hive-2.

圖10檢杳配置是否有誤

輸入Is命令,按下Enter鍵,查看當(dāng)前目錄(hive目錄)下的文件。在hive目錄下有

一個(gè)bin目錄,輸入Isbin命令,按下Enter鍵,查看bin目錄下的文件。可以看到bin

目錄下有一些Hive提供的腳本,使用Hive最簡(jiǎn)單的方式就是更用hive腳本啟動(dòng)相應(yīng)的服

務(wù),如圖11所示。

[root?node3apache-hive-2.3.6-bin]#Is

LICENSENOTICE

[roarAp'uhr-hixzpNZ/a.S-b'in],Itbin_________________________________________

hivPYcnfhpl^qlmetafccl"homaTool

圖11查看Hive的腳本文件

在使用hive腳本之前需要通過(guò)schematool命令實(shí)現(xiàn)Hive元數(shù)據(jù)庫(kù)的初始化。Hive

和NameNode有一點(diǎn)是相似的,就是要訪問(wèn)分布式文件系統(tǒng)中的文件,必須要知道這個(gè)文

件的存儲(chǔ)位置。在HDFS中元數(shù)據(jù)信息是存儲(chǔ)在NameNode上的,是通過(guò)文件的形式保

存的。而在Hive中元數(shù)據(jù)信息是通過(guò)關(guān)系型數(shù)據(jù)庫(kù)來(lái)保存的,Hive安裝好之后默認(rèn)提供一

個(gè)名為derby的數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)上可以存儲(chǔ)元數(shù)據(jù)信息。關(guān)系型數(shù)據(jù)庫(kù)是以表的形式

保存數(shù)據(jù)的,所以需要通過(guò)初始化工作把相關(guān)的表創(chuàng)建出來(lái)。可以通過(guò)bin/schematool

指定初始化的工作,輸入bin/schematool-dbTypederby-initSchema命令,按下Enter

鍵,執(zhí)行元數(shù)據(jù)初始化的相關(guān)工作,元數(shù)據(jù)初始化完成后效果如圖12所示。

beelinehivehive-confiq.sh,■,:?1花£*?1網(wǎng)

[root*node3apache-hive-2.3.6-6in]<HgbSEheiaggl--36Type-der6y-1市tschema-

SLF4J:classpathcontainsnultipieSLF4Jbindings.

SLF4J:Foundbindingin[jar:file:/opt/apache-hive-2.3.6-bin/lib/log4j-slf4j-impl-2.6.2.jar!

r.class]

SLF4J:Foundbindingin[jar:f1le:/usr/hadoop/hadoop-2.9.2/share/hadoop/co<nmon/lib/slf4j-log

tatlcLoggersinder.class]

SLF4J:seehttp://www.s1f4i.org/codes.hrml#mul11ple_bindingsfcranexplanation.

SLF4J:Actualbindingisortype[org.apache.logging.slf4j.Log4jLoggerFactory]

MetastoreconnectionURL:jdbc:derby:;databaseNan>e>metastore_db;create-true

MetastoreconnectionDriver:org.apache.derby.jdbc.EmbeddeCDrlver

Merastoreconnectionuser:APP

Startingmetastoreschemainitializationto2.3.0

Initializationscripthive-schema-2.3.0.derby.sql

Initializationscriptcompleted

schemaToolcompleted

圖12實(shí)現(xiàn)元數(shù)據(jù)庫(kù)初始化

下面就可以執(zhí)行hive命令了,輸入bin/hive命令,按下Enter鍵,hive成功啟動(dòng)后

會(huì)出現(xiàn)一個(gè)hive>提示符的窗口,在這個(gè)窗口中就可以輸入HQL語(yǔ)句了。可以先通過(guò)show

databases;命令直看當(dāng)前Hive環(huán)境下有哪些數(shù)據(jù)庫(kù),按下Enter鍵,結(jié)果顯示剛安裝好

的Hive只有一個(gè)默認(rèn)的default數(shù)據(jù)庫(kù),如圖13所示。

Logginginitializedusingconfigurationinjar:file:/opt/apache-hi'

iesAsync:true

Hive-on-MRisdeprecatedinHive2andmaynotbeavailableinthe

ne(1ut.spark*tez)prusingHive1.xreleases.

hive>[_showdatabases.

9K

default

Timetaken:6.121seconds,Fetched:1row(s)

hive>■

圖13查看當(dāng)前環(huán)境的數(shù)據(jù)庫(kù)

輸入createdatabasetestdb;命令,按下Enter鍵,創(chuàng)建一個(gè)名為testdb的數(shù)據(jù)庫(kù),

提示創(chuàng)建成功。再輸入showdatabases;命令進(jìn)行查看,按下Enter鍵,輸出結(jié)果顯示多

了T數(shù)據(jù)庫(kù)testdb,證明Hive已經(jīng)可以正常使用了,如圖14所示。

hive>showdatabases;

OK

default

Timetaken:6.121seconds.Fetched:1row(s)

hive>createdatabasetestdb:

OK

Timetaken:0.049seconds

hive>showdatabases1]

default

ttesrdh

Timetaken:0.018seconds.Fetched:2row(s)

圖14創(chuàng)建數(shù)據(jù)庫(kù)并查看

當(dāng)前這種方式是Hive最基本的使用方式,至此,這種方式就演示完了。

3.元數(shù)據(jù)庫(kù)配置

下面我們進(jìn)一步來(lái)學(xué)習(xí)Hive的配置,前面已經(jīng)在0主機(jī)上執(zhí)行過(guò)hive,

輸入Is命令,按下Enter鍵有看一下執(zhí)行hive命令后的目錄變化,輸出顯示當(dāng)前執(zhí)行hive

腳本的目錄下生成了一個(gè)名為derby.log的日志文件和一個(gè)metastore_db目錄。其中

metastore-db目錄下存儲(chǔ)了Hive的derby的元數(shù)據(jù)庫(kù)的信息,如圖15所示。

|?192.16a44.8I5192J68<44.9]X

[root<nodeBapache-h1ve-2r3.6-binj?】<_____

LICENSE[]NOTICi

(root^nodeBapache-h1ve-2.3.6-bin]f

圖15查看執(zhí)行hive腳本后當(dāng)前目錄的變化

下面切換到opt目錄下執(zhí)行hive。輸入cd/opt命令,按下Enter鍵,切換至ljopt目

錄;輸入Is命令,按下Enter鍵;在當(dāng)前目錄下輸入hive命令,按下Enter鍵,同樣進(jìn)入

hive>提示符下;輸入showdatabases;命令,按下Enter鋌,查看當(dāng)前數(shù)據(jù)庫(kù)信息,輸

出結(jié)果報(bào)錯(cuò),顯示找不到相關(guān)的數(shù)據(jù)庫(kù),如圖16所示。

[root@node3apache-h~ive-2.3.6-bin]"cd/6pt「

[root(?nocle3opt]#Is

)p.tar.QZindex,html

[root@node3opt]?|hive]

which:nohbase1nQ/usr/local/sbin:/usr/Iocal/bin:/usr/sbin:/usr/bin:/opt/jdkl.8.0_16

hadoop-2.9.2/sbin:/opt/zookeeper-3.4.6/bin://opt/apache-hive-2.3.6-bin/bin:/root/bin:/

in:/usr/hadoop/hadoop-2.9.2/sbin:/opt/zookeeper-3.4.6/bin:/opt/apache-hive-2.3.6-bin/b

SLF4J:classpathcontainsMultipleSLF43bindings.

SLF4J:Foundbindingin[jar:file:/opt/apache-hive-2.3.6-bin/lib/loq4j-slf4j-impl-2.6.

SLF4J:Foundbindingin[jar:file:/usr/hadoop/hadoop-2.9.2/share/hadoop/coflm?n/lib/slf

SLF4J:seehttp://www.slf4i.org/codes.html#mult1ple_bindingsforanexplanation.

SLF4J:Actualbindingisortype[org.apache.logging.slf4j.Log4jLoggerFactory]

LogginginitiaHzedusingconfigurationinjar:file:/opt/apache-hive-2.3.6-bin/lib/hiv

Hive-on-MRisdeorecatedinHive2andmaynotbeavailableinthefutureversions,co

hive>showdatabases;

FAILED:semanticExceptionorg.apache.hadoop.hive.ql.metadata.HiveException:java.lang.

hive>■

圖16直看當(dāng)前數(shù)據(jù)庫(kù)信息

輸入quit;命令,按卜Enter鍵退出;然后輸入Is命令,按卜Enter鍵,食看當(dāng)前目

英opt》的信息我們會(huì)發(fā)現(xiàn)在當(dāng)前目錄下也產(chǎn)生了derby.log日志文件和metastore_db

目錄。也就是說(shuō)通過(guò)這種默認(rèn)的元數(shù)據(jù)的方式無(wú)論在哪個(gè)目錄下執(zhí)行hive腳本,都會(huì)在當(dāng)

前的目錄下創(chuàng)建相應(yīng)的元數(shù)據(jù)的目錄,并且在該目錄下直找Hive元數(shù)據(jù)的信息。由于當(dāng)前

的opt目錄下沒(méi)有執(zhí)行元數(shù)據(jù)的初始化所以生成的metastore.db目錄中的信息是空的,

也就導(dǎo)致之前執(zhí)行showdatabases;命令時(shí)會(huì)報(bào)錯(cuò)。而在Hive的安裝目錄

(apache-hive-2.3.6-bin)下的metastore.db目錄執(zhí)行過(guò)元數(shù)據(jù)的初始化操作,所以

metastore_db目錄中有相應(yīng)的表,那么執(zhí)行showdatabases;命令時(shí)就能查到相應(yīng)的庫(kù)

信息。

從上面的操作中可以看出,采用默認(rèn)的方式使用Hive是非常不方便的,這種方式限定

了只能在一個(gè)固定的目錄下執(zhí)行hive的腳本服務(wù)?;谏鲜鲈颍覀冞€需要對(duì)Hive的

元數(shù)據(jù)做進(jìn)一步的配置,以便更便捷地應(yīng)用Hive技術(shù)。

在進(jìn)行元數(shù)據(jù)庫(kù)具體的配置工作之前我們先了解一些基礎(chǔ)知識(shí),首先通過(guò)如下所示的表

2來(lái)了解一下Hive元數(shù)據(jù)庫(kù)設(shè)置的相關(guān)信息。

表2Hive元數(shù)據(jù)庫(kù)設(shè)置

屬性名稱類型默認(rèn)值描述

hive.metastore.warehouse.dirURI/user/hive/warehouse托管表存儲(chǔ)位置

逗號(hào)分隔如果未設(shè)定,則使用

hive.metastore.uris的URI未設(shè)定當(dāng)前的metastore

jdbc:derby:;database

javax.jdo.option.ConnectionURLURImetastore數(shù)據(jù)庫(kù)

Name=metastore_db;

的JDBCURL

create=true

org.apache.derbty.jdbJDBC驅(qū)動(dòng)器的類

javax.jdo.option.ConnectionDriverName字符串

c.EmbeddedDriver名

javax.jdo.option.ConnectionUserName字符串略JDBC用戶名

javax.jdo.option.ConnectionPassword字符串略JDBC密碼

Hive提供了多種方式對(duì)元數(shù)據(jù)庫(kù)進(jìn)行配置,通常在生產(chǎn)環(huán)境中使用的方式需要配置相

應(yīng)的參數(shù),主要是通過(guò)JDBC的方式配置連接信息。如表中的第三行所示,即配置

javax.jdo.option.ConnectionURL參數(shù),通過(guò)JDBC的方式連接Hive,會(huì)在里面配置連接

的數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)的名楸口數(shù)據(jù)庫(kù)的類型等信息。然后還需要配置數(shù)據(jù)庫(kù)連接的驅(qū)動(dòng)類、配

置連接的用戶名和密碼等參數(shù)。這些參數(shù)配置好之后再使用Hive的時(shí)候,就會(huì)通過(guò)JDBC

的方式查找元數(shù)據(jù)庫(kù)的位置,不再依賴當(dāng)前目錄的方式了。在生產(chǎn)環(huán)境下使用這種方式配置

元數(shù)據(jù)庫(kù)會(huì)更加便捷。

下面我們?cè)偻ㄟ^(guò)如下所示的圖17來(lái)了解一下Hive元數(shù)據(jù)庫(kù)的三種配置方式。

EmbeddedHiveServiceJVM

metastore

Local

metastore

Remote

metastore

圖17Hive元數(shù)據(jù)庫(kù)的三種配置方式

前面我們?cè)谂渲肏ive時(shí)采用的默認(rèn)方式就是圖中所示的第一種方式Embedded

metastore,即嵌入式元數(shù)據(jù)的方式,使用derby的默認(rèn)方式,在執(zhí)行腳本的當(dāng)前目錄下

杳找元數(shù)據(jù)庫(kù)信息。

第二種方式是Localmetastore,即本地模式,這種方式需要配置一個(gè)單獨(dú)的元數(shù)據(jù)庫(kù),

通常這個(gè)數(shù)據(jù)庫(kù)會(huì)采用MySQL,然后在Hive的配置文件中配置相應(yīng)的元數(shù)據(jù)庫(kù)信息,如

表2中提到的4個(gè)參數(shù)。配置好之后在任何目錄下使用Hive的時(shí)候都會(huì)根據(jù)配置的參數(shù)直

找數(shù)據(jù)庫(kù),從而獲得元數(shù)據(jù)信息。這種方式使用起來(lái)相對(duì)會(huì)更加靈活,但會(huì)有一個(gè)問(wèn)題,就

是只能在本機(jī)上使用,因?yàn)樗脑獢?shù)據(jù)信息是在本機(jī)的配置文件里面記錄的。

如果需要在集群環(huán)境下使用Hive,最好配置為圖中所示的第三種方式Remote

metastore即遠(yuǎn)程服務(wù)器的方式。這種方式也需要有一個(gè)MySQL數(shù)據(jù)庫(kù)來(lái)充當(dāng)元數(shù)據(jù)庫(kù),

然后需要額外在集群中的一臺(tái)機(jī)器上配置元數(shù)據(jù)庫(kù)的配置信息,配置好之后在這臺(tái)服務(wù)器上

啟動(dòng)一個(gè)元數(shù)據(jù)服務(wù),這時(shí)候這臺(tái)主機(jī)就充當(dāng)了元數(shù)據(jù)的服務(wù)器,集群中的其他機(jī)器都是通

過(guò)客戶端的方式來(lái)連接元數(shù)據(jù)Server,并通過(guò)連接元數(shù)據(jù)Server來(lái)訪問(wèn)MySQL中的元數(shù)

據(jù)服務(wù)。這時(shí)候就可以通過(guò)遠(yuǎn)程的方式來(lái)訪問(wèn),并且集群中有一臺(tái)機(jī)器是充當(dāng)元數(shù)據(jù)服務(wù)器

的,其他機(jī)器是元數(shù)據(jù)的客戶端。

我們可以通過(guò)如下所示的圖18來(lái)理解元數(shù)據(jù)庫(kù)Server的配置。

HiveCU

MetaStoreMetaStoreServerMySQL

Client(Thrift)

Server

圖18元數(shù)據(jù)庫(kù)Server配置圖示

在Hive服務(wù)器端通過(guò)hive-servicemetastore命令啟動(dòng)元數(shù)據(jù)庫(kù)服務(wù),其他充當(dāng)

Hive客戶端的機(jī)器上在hive-site.xml文件中配置hive.metastore.uris,即配置元數(shù)據(jù)庫(kù)

服務(wù)器的連接地址。然后通過(guò)ThriftRPC協(xié)議訪問(wèn)這個(gè)元數(shù)據(jù)庫(kù)的信息。

下面我們通過(guò)實(shí)際操作來(lái)具體演示元數(shù)據(jù)庫(kù)的另外兩種配置方式。

(1)利用MySQL本地?cái)?shù)據(jù)庫(kù)配置Hive

打開(kāi)Linux客戶端工具,切換到主機(jī)(nodel),這臺(tái)主機(jī)還沒(méi)有安裝

Hive,所以無(wú)法使用Hive,下面我們?cè)谶@臺(tái)主機(jī)上安裝Hive.

依然是到Hive的官網(wǎng)復(fù)制安裝包地址鏈接,然后返回客戶端工具窗口,輸入wget命

令,并粘貼剛剛復(fù)制的安裝包地址鏈接,即完整命令為wgethttp:

///hive/hive-2.3.6/apache-hive-2.3.6-bin.tar.gz,按下Enter鍵,下載

Hive安裝包,如圖19、圖20所示。

Indexof/hive/hive-2.3.6

NameLasttrodifi—dSiz?Description

q

ParentDirectory-

片|apache-hive-2.3.6-bin.jar.工|2019-08-2211:53221M

aDache-hive-2.3.6-sr<^Jlr.2019-08-2211:53201

Apache/2.4.29(Ubuntu)ServeratPort30

圖19復(fù)制安裝包地址鏈接

[ro

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論