Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版) 課件 項(xiàng)目2 Hive環(huán)境搭建與基本操作_第1頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版) 課件 項(xiàng)目2 Hive環(huán)境搭建與基本操作_第2頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版) 課件 項(xiàng)目2 Hive環(huán)境搭建與基本操作_第3頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版) 課件 項(xiàng)目2 Hive環(huán)境搭建與基本操作_第4頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版) 課件 項(xiàng)目2 Hive環(huán)境搭建與基本操作_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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)介

任務(wù)2.1Hive的安裝與配置任務(wù)實(shí)施Hive工具中默認(rèn)使用的是Derby數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)使用簡(jiǎn)單,操作靈活,但是存在一定的局限性,Hive支持使用第三方數(shù)據(jù)庫(kù)(MySQL等),通過(guò)配置可以把MySQL集成到Hive工具中,MySQL功能更強(qiáng)大,企業(yè)應(yīng)用也更廣泛。1.MySQL的安裝與配置(1)準(zhǔn)備MySQL安裝包,安裝依賴軟件。在Docker宿主機(jī)拷貝Mysql安裝包到容器內(nèi),操作命令及結(jié)果如下。(2)安裝MySQL。創(chuàng)建simple目錄,并進(jìn)入安裝包所在目錄,通過(guò)“l(fā)l”命令查看上一步拷貝到容器內(nèi)的安裝包,操作命令及結(jié)果如下。解壓mysql安裝包到“/simple”目錄,解壓后的目錄重命名為mysql(重命名操作是為了后續(xù)操作方便),操作命令及結(jié)果如下。(3)配置環(huán)境變量,執(zhí)行命令“vim~/.bashrc”,在.bashrc文件最后增加如下配置。執(zhí)行命令“source~/.bashrc”,使得環(huán)境變量立即生效,操作命令如下。(4)用戶及權(quán)限相關(guān)配置。添加mysql組和mysql用戶,執(zhí)行命令“groupaddmysql”“useradd-r-gmysqlmysql”,操作命令如下。進(jìn)入mysql所在的目錄,并更改其所屬的組和用戶。執(zhí)行命令“chgrp-Rmysql.”和“chown-Rmysql.”,操作命令如下。執(zhí)行mysql_install_db腳本,對(duì)MySQL中的data目錄進(jìn)行初始化。注意,MySQL服務(wù)進(jìn)程mysqld運(yùn)行時(shí)會(huì)訪問(wèn)data目錄,所以必須由啟動(dòng)mysqld進(jìn)程的用戶(即之前設(shè)置的mysql用戶)執(zhí)行此腳本,或者使用root用戶執(zhí)行此腳本。執(zhí)行命令時(shí)應(yīng)加上參數(shù)--user=mysql,啟動(dòng)過(guò)程中會(huì)生成密碼,將密碼復(fù)制并保存好,第一次登錄時(shí)需要用到,操作命令及結(jié)果如下。最后一條信息中的“tZYvmX:zD1)j”是登錄Mysql的初始密碼。在mysql目錄中,除了data目錄外,將其余目錄和文件均修改為root用戶所有,mysql用戶只需作為mysql/data目錄中所有文件的所有者即可,操作命令如下。(5)配置啟動(dòng)文件。為了再次啟動(dòng)MySQL服務(wù)時(shí),不需要切換到目錄bin,并通過(guò)./mysqld_safe--user=mysql進(jìn)行啟動(dòng)操作,對(duì)啟動(dòng)文件進(jìn)行相應(yīng)的配置操作,以便使服務(wù)可以通過(guò)執(zhí)行“/etc/init.d/mysql.serverstart”命令進(jìn)行啟動(dòng),操作命令如下。進(jìn)入/etc/init.d目錄,編輯mysql文件,操作命令如下。修改mysql文件,在文件中修改2個(gè)目錄的位置,設(shè)置“basedir=/simple/mysql”“datadir=/simple/mysql/data”,操作結(jié)果如下。啟動(dòng)MySQL服務(wù),操作命令及結(jié)果如下。執(zhí)行命令“mysql-uroot-p”,登錄MySQL,提示輸入密碼,將剛才復(fù)制的密碼粘貼到冒號(hào)后面,按“Enter”鍵,進(jìn)入MySQL命令行模式,操作命令及結(jié)果如下。進(jìn)入命令行模式后,為了方便登錄,需要修改密碼,這里執(zhí)行命令“setpasswordfor'root'@'localhost'=password('123456');”,將密碼修改為“123456”(也可以根據(jù)需要自行設(shè)定),操作命令及結(jié)果如下。(6)任務(wù)測(cè)試。重新啟動(dòng)MySQL服務(wù)并進(jìn)行登錄(密碼使用“123456”),操作命令及結(jié)果如下。進(jìn)入MYSQL命令行后創(chuàng)建數(shù)據(jù)庫(kù)(提供給Hive使用),操作命令及結(jié)果如下。如果登錄時(shí)忘記了密碼,則需要重新設(shè)定密碼。在mysql服務(wù)停止?fàn)顟B(tài)下,可以執(zhí)行命令“mysqld_safe--user=mysql--skip-grant-tables--skip-networking&”跳過(guò)密碼驗(yàn)證,之后打開(kāi)一個(gè)新的窗口,此時(shí)可以免密進(jìn)入MySQL的命令行模式,操作命令及結(jié)果如下。免密登錄mysql,操作命令及結(jié)果如下。在命令行中,使用“mysql”數(shù)據(jù)庫(kù),執(zhí)行“UPDATEuserSETauthentication_string=PASSWORD('123456')whereUSER='root';”命令,重置密碼,并執(zhí)行命令“flushprivileges”刷新權(quán)限,操作命令及結(jié)果如下。2.基于HDFS和MySQL的Hive環(huán)境搭建(1)解壓Hive進(jìn)入存放安裝包的目錄,執(zhí)行命令“tar–zxvfapache-hive-1.2.1-bin.tar.gz–C/simple”,把Hive安裝包解壓到/simple目錄中,執(zhí)行完解壓命令后,在simple目錄中可以查看到解壓后的目錄“apache-hive-1.2.1-bin”,修改目錄名稱為“hive1.2.1”,操作命令及結(jié)果如下。(2)配置Hive解壓mysql-connector-java-5.1.40.tar.gz,進(jìn)入解壓目錄,拷貝驅(qū)動(dòng)文件“mysql-connector-java-5.1.40-bin.jar”到hive1.2.1目錄的lib目錄下,操作命令如下。切換到目錄/simple/hive1.2.1/conf下,執(zhí)行命令“cphive-env.sh.templatehive-env.sh”,利用配置文件模板復(fù)制生成配置文件hive-env.sh,查看所生成的文件。操作命令及結(jié)果如下。編輯配置文件hive-env.sh,修改“HADOOP_HOME”項(xiàng)為“/usr/local/hadoop”,具體操作如下。在目錄/simple/hive1.2.1/conf下,執(zhí)行命令“mvhive-default.xml.templatehive-site.xml”,重命名文件為hive-site.xml,操作命令如下。編輯hive-site.xml文件的內(nèi)容(建議刪除原有文件中的所有內(nèi)容),編輯文件內(nèi)容如下。操作結(jié)束后,在目錄$HIVE_HOME/bin中,修改文件hive-config.sh,添加內(nèi)容如下。編輯環(huán)境變量~/.bashrc,在文件最后添加內(nèi)容如下。執(zhí)行命令“source~/.bashrc”,使配置的環(huán)境變量立即生效。隨后,執(zhí)行命令“start-all.sh”,啟動(dòng)Hadoop服務(wù)后,執(zhí)行“./hive”命令,操作命令及結(jié)果如下。若正確進(jìn)入HiveShell環(huán)境,則表示Hive安裝配置成功。任務(wù)2.2

Hive的應(yīng)用任務(wù)實(shí)施Hadoop和Hive的環(huán)境已經(jīng)搭建好,下面進(jìn)行查詢測(cè)試。為了清楚地對(duì)比MySQL與Hive在不同數(shù)據(jù)量下的性能,該測(cè)試分為兩部分進(jìn)行。測(cè)試數(shù)據(jù)量設(shè)定為5萬(wàn)余行(測(cè)試中可以根據(jù)實(shí)際情況進(jìn)行設(shè)定),具體測(cè)試過(guò)程如下。1.MySQL數(shù)據(jù)查詢與數(shù)據(jù)提取在測(cè)試用表中查詢數(shù)據(jù)庫(kù)的操作命令及結(jié)果如下。其中測(cè)試用表對(duì)應(yīng)的數(shù)據(jù)庫(kù)為info_station,數(shù)據(jù)表為info_small01。(1)在MySQL中使用“select*frominfo_small01”命令查詢數(shù)據(jù),進(jìn)行測(cè)試,操作命令及部分結(jié)果如下。(2)將表info_small01中的數(shù)據(jù)導(dǎo)出到文件中(文件擴(kuò)展名為.csv),導(dǎo)出目錄“mysql_files”需要提前創(chuàng)建,操作命令及結(jié)果如下。(3)在指定的導(dǎo)出目錄下,查看生成的數(shù)據(jù)文件,操作命令及結(jié)果如下。2.向Hive中導(dǎo)入數(shù)據(jù)并進(jìn)行查詢(1)在Hive中創(chuàng)建表info_small02,建表語(yǔ)句如下。(2)導(dǎo)入數(shù)據(jù)的過(guò)程如下。將數(shù)據(jù)文件info_small01.csv導(dǎo)入到Hive的表info_small02中,操作命令及結(jié)果如下。當(dāng)數(shù)據(jù)被加載到表中時(shí),不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何轉(zhuǎn)換。LOAD操作只是將數(shù)據(jù)復(fù)制到Hive表對(duì)應(yīng)的位置,這個(gè)表只有一個(gè)文件,文件沒(méi)有切分成多份。在HDFS中查看生成的文件,操作命令及結(jié)果如下。(3)執(zhí)行查詢的過(guò)程如下。當(dāng)前約為50000行數(shù)據(jù)的文件,使用Hive執(zhí)行簡(jiǎn)單查詢,由操作結(jié)果可見(jiàn)其花費(fèi)了0.271s,操作命令及結(jié)果如下。3.優(yōu)化導(dǎo)入過(guò)程在優(yōu)化導(dǎo)入操作中,通過(guò)指定CLUSTERED字段,將文件通過(guò)Hash算法打散成多個(gè)小文件,這里設(shè)置8個(gè)Bucket。它會(huì)為數(shù)據(jù)提供額外的結(jié)構(gòu)以獲得更快的查詢速度。(1)新建表info_small03,操作命令及結(jié)果如下。(2)從表info_small02中將數(shù)據(jù)導(dǎo)入到表info_small03中。①?gòu)?qiáng)制執(zhí)行裝桶的操作,操作命令如下。②導(dǎo)入數(shù)據(jù),操作命令如下。將表info_small02中的數(shù)據(jù)導(dǎo)入列表info_small03中,部分結(jié)果如右圖。(3)查看文件是否被分桶。從Hadoop集群的文件系統(tǒng)Web頁(yè)面中查看所創(chuàng)建的分區(qū),結(jié)果如圖2-4所示。在Web頁(yè)面中查看所創(chuàng)建的文件分桶,結(jié)果如圖所示。在命令行中查看文件分桶,操作命令及結(jié)果如下。(4)執(zhí)行查詢的過(guò)程如下。在Hive中執(zhí)行“select*frominfo_small03”命令,操作命令及部分結(jié)果如下。在前面的操作中,使用的測(cè)試數(shù)據(jù)約為50

000行。由測(cè)試可以看出MySQL查詢50

000行大概需要0.03s,用Hive優(yōu)化前同樣的查詢大概需要0.271s,用Hive優(yōu)化后同樣的查詢大概需要0.038s,由此可見(jiàn),在小數(shù)據(jù)量的情況下,完成同樣的查詢操作,Hive與MySQL相比,并沒(méi)有體現(xiàn)出性能的優(yōu)勢(shì)。下面采用大量數(shù)據(jù)(約55萬(wàn)行)進(jìn)行操作對(duì)比。測(cè)試數(shù)據(jù)量設(shè)定,約為7000萬(wàn)行數(shù)據(jù)(測(cè)試中可以根據(jù)實(shí)際進(jìn)行設(shè)定,數(shù)據(jù)量越大越好),具體測(cè)試過(guò)程如上所述,測(cè)試結(jié)果如下。(1)MySQL查詢結(jié)果。啟動(dòng)MySQL,創(chuàng)建“info1”數(shù)據(jù)表并導(dǎo)入數(shù)據(jù),查詢7000多萬(wàn)行數(shù)據(jù),結(jié)果直接“killed”,操作命令及結(jié)果如右。#先創(chuàng)建info1表mysql>CREATETABLE`info1`(>`zona`varchar(255),>`local`varchar(255),>`secao`varchar(255),>`qtd_eleitores_biometrico`varchar(255),>`qtd_eleitores_codigo`varchar(255),>`id_eleicao`varchar(255),>`qtd_eleitores_aptos`varchar(255),>`tipo_cargo`varchar(255),>`codigo_cargo`varchar(255),>`qtd_comparecimento`varchar(255),>`tipo_voto`varchar(255),>`qtd_votos`varchar(255),>`partido`varchar(255),>`codigo_candidato`varchar(255),>`identificacao_votavel`varchar(255)>)ENGINE=InnoDBDEFAULTCHARSET=utf8mb3;#再導(dǎo)入數(shù)據(jù)mysql>loaddatalocalinfile'/opt/info.csv'intotableinfo1fieldsterminatedby','ignore1lines;QueryOK,70115756rowsaffected,65535warnings(5min31.57sec)Records:70115756Deleted:0Skipped:0Warnings:65477431#查詢?nèi)頂?shù)據(jù)mysql>select*frominfo1;Killed(2)Hive優(yōu)化前查詢結(jié)果。進(jìn)入Hive命令行,創(chuàng)建“info2”表,表結(jié)構(gòu)如右。hive>createtableinfo2(>zonastring,>local_xstring,>secaostring,>qtd_eleitores_biometricostring,>qtd_eleitores_codigostring,>id_eleicaostring,>qtd_eleitores_aptosstring,>tipo_cargostring,>codigo_cargostring,>qtd_comparecimentostring,>tipo_votostring,>qtd_votosstring,>partidostring,>codigo_candidatostring,>identificacao_votavelstring)>rowformatdelimitedfieldsterminatedby','>TBLPROPERTIES("skip.header.line.count"="1");將數(shù)據(jù)導(dǎo)入info2表,操作命令及結(jié)果如下。執(zhí)行查詢操作,命令及結(jié)果如右。執(zhí)行篩選查詢操作,命令及結(jié)果如下。(3)Hive優(yōu)化后查詢。進(jìn)入Hive命令行,創(chuàng)建“info3”表,表結(jié)構(gòu)如下。#先創(chuàng)建info3表hive>createtableinfo3(>local_xstring,>secao

溫馨提示

  • 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)論