




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 割草與草原生產(chǎn)力考核試卷
- 股權(quán)激勵(lì)計(jì)劃設(shè)計(jì)考核試卷
- 港口及航道工程的船舶操縱模擬考核試卷
- 糖果企業(yè)市場(chǎng)營(yíng)銷(xiāo)策略與實(shí)施效果考核試卷
- 組織變革與創(chuàng)新管理實(shí)踐成效評(píng)價(jià)方法考核試卷
- 水電工程運(yùn)行維護(hù)規(guī)程與操作技能考核試卷
- 幼師直播考試試題及答案
- 菏澤教編考試試題及答案
- 會(huì)員營(yíng)銷(xiāo)考試試題及答案
- 消防維護(hù)考試試題及答案
- 上海上海閔行職業(yè)技術(shù)學(xué)院招聘60人筆試歷年參考題庫(kù)附帶答案詳解
- 【教學(xué)評(píng)一體化】第五單元 觀世間萬(wàn)物悟人生哲思【大單元公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)】新統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)名師備課
- 廣西中藥深加工項(xiàng)目投資計(jì)劃書(shū)
- 私家偵探合同協(xié)議
- 第18課《井岡翠竹》課件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 公立醫(yī)院成本核算指導(dǎo)手冊(cè)
- 第七章-生物醫(yī)學(xué)工程的倫理問(wèn)題
- MOOC 中醫(yī)與辨證-暨南大學(xué) 中國(guó)大學(xué)慕課答案
- 年產(chǎn)10噸功能益生菌凍干粉的工廠設(shè)計(jì)改
- 《焦慮癥基礎(chǔ)知識(shí)》PPT課件.ppt
- 基于鉆石模型的南通紡織產(chǎn)業(yè)競(jìng)爭(zhēng)力分析
評(píng)論
0/150
提交評(píng)論