Hadoop大數(shù)據(jù)平臺(tái)構(gòu)建與應(yīng)用(工作手冊(cè)式)(微課版) 課件 第4-6章 Hive組件安裝配置與應(yīng)用、ZooKeeper安裝配置與應(yīng)用、HBase安裝配置與應(yīng)用_第1頁
Hadoop大數(shù)據(jù)平臺(tái)構(gòu)建與應(yīng)用(工作手冊(cè)式)(微課版) 課件 第4-6章 Hive組件安裝配置與應(yīng)用、ZooKeeper安裝配置與應(yīng)用、HBase安裝配置與應(yīng)用_第2頁
Hadoop大數(shù)據(jù)平臺(tái)構(gòu)建與應(yīng)用(工作手冊(cè)式)(微課版) 課件 第4-6章 Hive組件安裝配置與應(yīng)用、ZooKeeper安裝配置與應(yīng)用、HBase安裝配置與應(yīng)用_第3頁
Hadoop大數(shù)據(jù)平臺(tái)構(gòu)建與應(yīng)用(工作手冊(cè)式)(微課版) 課件 第4-6章 Hive組件安裝配置與應(yīng)用、ZooKeeper安裝配置與應(yīng)用、HBase安裝配置與應(yīng)用_第4頁
Hadoop大數(shù)據(jù)平臺(tái)構(gòu)建與應(yīng)用(工作手冊(cè)式)(微課版) 課件 第4-6章 Hive組件安裝配置與應(yīng)用、ZooKeeper安裝配置與應(yīng)用、HBase安裝配置與應(yīng)用_第5頁
已閱讀5頁,還剩172頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MySQL關(guān)系數(shù)據(jù)庫的安裝與配置任務(wù)描述Hive元數(shù)據(jù)存儲(chǔ)在MySQL數(shù)據(jù)庫中,因此在部署Hive組件前需要首先在Linux系統(tǒng)下安裝MySQL數(shù)據(jù)庫,并進(jìn)行MySQL字符集、安全初始化、遠(yuǎn)程訪問權(quán)限等相關(guān)配置。任務(wù)分析Linux(CentOS7)服務(wù)器會(huì)自動(dòng)安裝MariaDB,MariaDB數(shù)據(jù)庫管理系統(tǒng)是MySQL的一個(gè)分支。由于我們采取本地模式安裝Hive,需要自己安裝MySQL,所以需要先查詢并卸載MariaDB。另外在Linux安裝MySQL數(shù)據(jù)庫的方式有很多種,可以直接安裝安裝包進(jìn)行相關(guān)的配置,也可以選擇在線安裝。本手冊(cè)采用安裝軟件包的方式。4.1.1安裝MySQL數(shù)據(jù)庫1.卸載自帶的數(shù)據(jù)庫可以使用rpm命令的qa參數(shù)查看系統(tǒng)安裝的數(shù)據(jù)庫名稱和版本,以方便卸載,使用如代碼4-1所示的代碼運(yùn)行,效果如圖4-1所示。代碼4-1查詢自帶數(shù)據(jù)庫rpm-qa|grepmariadb可以使用rpm命令的-e參數(shù)卸載所查詢到的數(shù)據(jù)庫,--nodeps參數(shù)的目的是避免軟件相關(guān)性引起不能進(jìn)行卸載操作,如代碼4-2所示。請(qǐng)讀者注意,這里的軟件包名稱和版本務(wù)必和上一步查詢的一致。代碼4-2卸載自帶數(shù)據(jù)庫rpm-e--nodepsmariadb-libs-5.5.68-1.el7.x86_64rpm-qa|grepmariadb卸載后再次執(zhí)行查看的命令,已安裝列表中就沒有了該數(shù)據(jù)庫。下面可以進(jìn)行MySQL數(shù)據(jù)庫的安裝。圖4-1自帶數(shù)據(jù)庫名稱和版本2.安裝MySQL程序包本手冊(cè)所使用的MySQL版本是MySQL8.0.21,可以從官網(wǎng)下載壓縮包。下載好的安裝包解壓后將文件夾上傳到指定目錄下,本手冊(cè)指定為/root/目錄,進(jìn)入到/root/mysql-8.0.21/后使用ls命令可以查看上傳的安裝包(具體上傳方式請(qǐng)參考項(xiàng)目1),如圖4-2所示。圖4-2查看安裝包2.安裝MySQL程序包應(yīng)用代碼4-3的rpm命令按如下順序依次安裝MySQL數(shù)據(jù)庫的MySQLCommon、MySQL

Libs、

MySQLClient、MySQLServer軟件包,

命令中的-ivh表示安裝軟件,--force表示強(qiáng)制安裝;

--nodeps就是安裝時(shí)不檢查依賴關(guān)系,如這個(gè)rpm包需要A,但是系統(tǒng)沒裝A,

這樣軟件包就裝不上,

用--nodeps能忽略依賴關(guān)系直接安裝,安裝過程如圖4-3所示。代碼4-3安裝程序包c(diǎn)d/root/mysql-8.0.21/--切換到mysql的文件夾rpm-ivh--force--nodepsmysql-community-client-8.0.21-1.el7.x86_64.rpmrpm-ivh--force--nodepsmysql-community-common-8.0.21-1.el7.x86_64.rpmrpm-ivh--force--nodepsmysql-community-libs-8.0.21-1.el7.x86_64.rpmrpm-ivh--force--nodepsmysql-community-server-8.0.21-1.el7.x86_64.rpm圖4-3解壓安裝的過程3.修改f配置文件安裝好軟件包后,需要修改MySQL數(shù)據(jù)庫配置,在/etc/f文件中添加MySQL數(shù)據(jù)庫配置項(xiàng),如表4-1所示。應(yīng)用“vi/etc/f”命令在文件的最后添加配置內(nèi)容,如表4-2所示,保存退出。表4-1MySQL數(shù)據(jù)庫配置字段配置值配置說明default-storage-engineinnodb設(shè)置innodb為默認(rèn)的存儲(chǔ)引擎innodb_file_per_table-設(shè)置每個(gè)表的數(shù)據(jù)單獨(dú)保存,而不是統(tǒng)一保存在innodb系統(tǒng)表空間中。單獨(dú)保存有方便管理和提升性能兩方面優(yōu)勢(shì)collation-serverutf8_general_ci設(shè)置支持中文編碼字符集init-connect'SETNAMESutf8'設(shè)置用戶登錄到數(shù)據(jù)庫之后,在執(zhí)行第一次查詢之前執(zhí)行“SETNAMESutf8”命令,將使用的字符編碼設(shè)定為UTF-8character-set-serverutf8將MySQL服務(wù)器字符集設(shè)定為UTF-8表4-1MySQL數(shù)據(jù)庫配置default-storage-engine=innodbinnodb_file_per_tablecollation-server=utf8_general_ciinit-connect='SETNAMESutf8'character-set-server=utf84.啟動(dòng)MySQL服務(wù)設(shè)置完配置選項(xiàng)后,啟動(dòng)MySQL服務(wù),如所示代碼4-4,啟動(dòng)之后同時(shí)查看服務(wù)的啟動(dòng)狀態(tài),效果如圖4-4所示,可以看出mysqld進(jìn)程狀態(tài)為active(running),表示MySQL數(shù)據(jù)庫正常運(yùn)行。代碼4-4啟動(dòng)并查看MySQL服務(wù)systemctlstartmysqld#啟動(dòng)服務(wù)systemctlstatusmysqld#查看服務(wù)狀態(tài)如果要關(guān)閉MySQL數(shù)據(jù)庫服務(wù),執(zhí)行“systemctlstopmysqld”命令即可。圖4-3解壓安裝的過程4.1.2配置MySQL數(shù)據(jù)庫1.查詢初始密碼MySQL數(shù)據(jù)庫的root用戶密碼是安裝后隨機(jī)生成的,所以每次安裝后生成的默認(rèn)密碼不相同。查詢MySQL數(shù)據(jù)庫默認(rèn)密碼,如代碼4-5所示,密碼顯示的效果如圖4-5所示。代碼4-5查詢初始密碼cat/var/log/mysqld.log|greppassword代碼4-5查詢到的密碼為隨機(jī)自動(dòng)生成,每一次不同,請(qǐng)讀者注意:在后續(xù)的配置中,務(wù)必根據(jù)本地查詢的密碼進(jìn)行登錄,而不要照抄本手冊(cè)的密碼。圖4-5初始密碼顯示2.安全設(shè)置MySQL數(shù)據(jù)庫在使用之前,應(yīng)該先進(jìn)行安全初始化設(shè)置。執(zhí)行代碼4-6中的“mysql_secure_installation”命令初始化MySQL數(shù)據(jù)庫,初始化過程中需要設(shè)定數(shù)據(jù)庫root用戶登錄密碼,密碼需符合安全規(guī)則,包括大小寫字符、數(shù)字和特殊符號(hào),本手冊(cè)建議設(shè)定密碼為Password123$。如果是第一次進(jìn)行安全設(shè)置,會(huì)首先提示用戶進(jìn)行初始密碼的修改,如圖4-6所示。代碼4-6安全初始化命令mysql_secure_installation圖4-6初始密碼修改2.安全設(shè)置完成以上初始密碼修改后,或不是首次進(jìn)行安全設(shè)置(會(huì)要求輸入root用戶密碼),會(huì)進(jìn)行如圖4-7所示的操作。首先在①處詢問是否要修改當(dāng)前的密碼,可以選擇修改密碼也可以不修改密碼。在這里選擇不再修改可以直接回車;在②處詢問是否刪除匿名用戶,輸入“Y”回車;在③處表示是否拒絕root用戶遠(yuǎn)程登錄,在鍵盤直接輸入回車,表示允許root用戶遠(yuǎn)程登錄;在④處表示是否刪除測(cè)試數(shù)據(jù)庫,輸入“Y”回車;在⑤處表示是否重新加載授權(quán)表,輸入“Y”回車;這樣就完成了安全初始化設(shè)置。圖4-7初始密碼顯示3.本地與遠(yuǎn)程訪問授權(quán)由于在Hive需要添加root用戶從本地和遠(yuǎn)程訪問MySQL數(shù)據(jù)庫表單的授權(quán)。使用MySQL登錄命令連接MySQL數(shù)據(jù)庫服務(wù),如代碼4-7所示,其中-u后面的root表示登錄的用戶名,-p后面表示root用戶的密碼。代碼4-7復(fù)制配置文件mysql-uroot-pPassword123$成功登錄后,出現(xiàn)MySQL的命令行模式,使用“showdatabases;”命令可以查詢下當(dāng)前MySQL數(shù)據(jù)庫服務(wù)器中的默認(rèn)的數(shù)據(jù)庫列表,結(jié)果如圖4-8所示。圖4-8登錄連接MySQL測(cè)試3.本地與遠(yuǎn)程訪問授權(quán)可以看到root的host是localhost而不是%,那么當(dāng)其他節(jié)點(diǎn)訪問的時(shí)候就會(huì)被拒絕訪問,所以使用SQL代碼進(jìn)行加一個(gè)root的host是%的賬號(hào)(%表示任何主機(jī)均可訪問),如代碼

4-9所示,并再次查詢結(jié)果如圖4-10所示。代碼4-9查詢r(jià)oot用戶的host配置(設(shè)置后)createuser'root'@'%'identifiedby'Password123$';selecthost,user,pluginfromuser;#查看root的host配置圖4-8登錄連接MySQL測(cè)試3.本地與遠(yuǎn)程訪問授權(quán)現(xiàn)在可以使用SQL代碼配置遠(yuǎn)程訪問權(quán)限,并強(qiáng)制更新權(quán)限,如代碼4-10所示。代碼4-10查詢r(jià)oot用戶的host配置grantallprivilegeson*.*to'root'@'%'withgrantoption;flushprivileges;exit;#退出MySQL客戶端至此,完成了配置Hive組件之前的MySQL數(shù)據(jù)庫的安裝與配置工作。謝謝Hive組件安裝與配置主講:李強(qiáng)任務(wù)描述Hive數(shù)據(jù)倉庫需要運(yùn)行在Hadoop文件系統(tǒng)上,同時(shí)將元數(shù)據(jù)存儲(chǔ)在MySQL數(shù)據(jù)庫中,所以在本任務(wù)中,安裝該組件后,主要是針對(duì)Hadoop的相關(guān)屬性配置以及配置MySQL的相關(guān)信息。任務(wù)分析本節(jié)的操作任務(wù)中,比較復(fù)雜的是在Hive的配置文件中設(shè)置訪問MySQL數(shù)據(jù)庫的信息,由于配置文件模板內(nèi)容較長,讀者可以選擇通過查找配置項(xiàng)定位的方式進(jìn)行修改,也可以單獨(dú)做一個(gè)必要配置項(xiàng)內(nèi)容的配置文件代替,本手冊(cè)使用修改模板的方式。4.2.1安裝Hive組件1.解壓安裝文件本手冊(cè)所使用的版本是Hive3.1.2,可以從官網(wǎng)下載。下載好的安裝包都需上傳到指定目錄下,本手冊(cè)指定為/root/目錄,使用“l(fā)s/root/”命令可以查看上傳的安裝包(具體上傳方式請(qǐng)參考項(xiàng)目1),如圖4-11所示。圖4-11查看安裝包使用tar命令解壓Hive到/usr/local/src文件夾,并切換到安裝目錄下查看,可以使用ls查看解壓后的效果,如代碼4-11所示,效果如圖4-12所示。代碼4-11解壓安裝包tar-zxf/root/apache-hive-3.1.2-bin.tar.gz-C/usr/local/srccd/usr/local/src/ls圖4-12查看解壓好的安裝包2.修改文件夾名稱由于解壓后的文件夾名稱帶有比較復(fù)雜的版本號(hào),為了簡(jiǎn)化后續(xù)配置,此處修改文件夾名稱。使用mv命令將解壓的apache-hive-3.1.2-bin目錄重命名為hive,如代碼4-12所示,效果如圖4-13所示。代碼4-12重命名文件夾cd/usr/local/src/mvapache-hive-3.1.2-binhivels圖4-2查看安裝包3.修改環(huán)境變量文件為了可以在任何目錄下直接執(zhí)行Hive的相關(guān)命令,可以在環(huán)境變量文件中添加Hive的環(huán)境變量。前面項(xiàng)目已經(jīng)說明過,本手冊(cè)在/root/.bash_profile文件操作,修改環(huán)境變量文件如代碼4-13所示。代碼4-13編輯環(huán)境配置文件vi/root/.bash_profile將如表4-3所示的配置信息添加到/root/.bash_profile文件的末尾,保存退出。表4-3環(huán)境變量文件的添加內(nèi)容#sethiveenvironmentexportHIVE_HOME=/usr/local/src/hiveexportPATH=$PATH:$HIVE_HOME/bin4.生效環(huán)境變量文件為了更新環(huán)境變量文件的配置,需要在master節(jié)點(diǎn)執(zhí)行下面的命令使得環(huán)境變量文件生效,如代碼4-14所示。代碼4-14生效環(huán)境配置文件source/root/.bash_profile4.2.2配置Hive環(huán)境1.修改hive-env.sh配置文件hive-env.sh是Hive執(zhí)行時(shí)去加載Hadoop環(huán)境變量的配置文件,用于指定Hadoop環(huán)境變量,該文件在文件夾中是模板文件,需要先從模板文件復(fù)制為hive-env.sh再修改文件內(nèi)容,如代碼4-15所示。代碼4-15修改hive-env.shcd/usr/local/src/hive/confcphive-env.sh.templatehive-env.shvihive-env.sh將如表4-4所示的內(nèi)容添加到hive-env.sh文件的末尾,保存退出。表4-4文件的添加內(nèi)容exportHADOOP_HOME=/usr/local/src/hadoop2.修改hive-site.xml配置文件hive-site.xml是Hive訪問MySQL數(shù)據(jù)庫的核心配置文件,用于配置相關(guān)的MySQL訪問屬性,該文件在文件夾中是模板文件,需要先從模板文件復(fù)制為hive-site.xml再修改文件內(nèi)容,由于模板文件包含的內(nèi)容相當(dāng)多,針對(duì)本手冊(cè)面向的對(duì)象,推薦創(chuàng)建一個(gè)相對(duì)簡(jiǎn)單的配置文件,如代碼4-16所示。代碼4-16創(chuàng)建hive-site.xmlcd/usr/local/src/hive/confvihive-site.xml該文件需要進(jìn)行設(shè)置的主要配置項(xiàng)參數(shù)請(qǐng)參考表4-5所示。表4-5hive-site.xml配置文件主要參數(shù)解釋序號(hào)配置項(xiàng)默認(rèn)值修改值1javax.jdo.option.ConnectionURLjdbc:derby:;databaseName=metastore_db;create=truejdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true2javax.jdo.option.ConnectionPasswordminePassword123$3hive.metastore.schema.verificationtruefalse4javax.jdo.option.ConnectionDriverNameorg.apache.derby.jdbc.EmbeddedDrivercom.mysql.cj.jdbc.Driver5javax.jdo.option.ConnectionUserNameAPProot6臨時(shí)目錄路徑(共有4處需要修改)${system:java.io.tmpdir}/${system:user.name}/usr/local/src/hive/tmp2.修改hive-site.xml配置文件文件內(nèi)容如表4-6所示。表4-6hive-site.xml配置文件修改內(nèi)容<?xmlversion="1.0"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><property><name>hive.exec.scratchdir</name><value>hdfs://master:9000/user/hive/tmp</value></property><property><name>hive.metastore.warehouse.dir</name><value>hdfs://master:9000/user/hive/warehouse</value></property><property><property><name>hive.metastore.uris</name>......省略3.導(dǎo)入包文件Hive在初始化之前需要進(jìn)入MySQL數(shù)據(jù)庫創(chuàng)建hive數(shù)據(jù)庫,如代碼4-19所示,進(jìn)入MySQL數(shù)據(jù)庫。代碼4-19登錄連接MySQL使用SQL語句創(chuàng)建Hive數(shù)據(jù)庫,語句如代碼4-20所示。代碼4-20SQL語句創(chuàng)建數(shù)據(jù)庫createdatabasehive;alterdatabasehivecharactersetlatin1;exit:mysql-uroot-pPassword123$4.2.3初始化Hive數(shù)據(jù)庫1.創(chuàng)建Hive數(shù)據(jù)庫需要使用如代碼4-18所示的命令管理如下幾個(gè)程序包。(1)使用MySQL數(shù)據(jù)庫作為元數(shù)據(jù)的存儲(chǔ)介質(zhì),還需要上傳MySQL連接驅(qū)動(dòng)的jar包(該jar包的版本必須與MySQL的版本匹配,本手冊(cè)使用mysql-connector-java-8.0.21,并已經(jīng)上傳到/root/)到Hive安裝文件夾的lib文件夾中。(2)將Hive安裝目錄lib下的jline-2.12.jar同步到Hadoop類庫中。(3)刪除Hive安裝目錄lib下的guava-19.0.0.jar包,并將Hadoop類庫中的新版guava包同步過來。說明:每一個(gè)包的文件版本需要讀者自行確定,并根據(jù)本地的版本對(duì)代碼中的文件名進(jìn)行修改。代碼4-18導(dǎo)入包代碼cp/root/mysql-connector-java-8.0.21.jar/usr/local/src/hive/lib/cp/usr/local/src/hive/lib/jline-2.12.jar/usr/local/src/hadoop/share/hadoop/yarn/lib/rm-f/usr/local/src/hive/lib/guava-19.0.jarcp/usr/local/src/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar/usr/local/src/hive/lib2.初始化Hive數(shù)據(jù)庫的初始化,如代碼4-21所示,需要保證此時(shí)MySQL為啟動(dòng)狀態(tài),效果如圖4-14所示。代碼4-21Hive數(shù)據(jù)庫的初始化圖4-14初始化成功提示schematool-dbTypemysql-initSchema謝謝HiveShell基本操作主講:李強(qiáng)任務(wù)描述Hive是一種數(shù)據(jù)庫技術(shù),可以定義數(shù)據(jù)庫和數(shù)據(jù)表來分析結(jié)構(gòu)化的數(shù)據(jù)。通過自己的SQL查詢分析需要的內(nèi)容,這套SQL稱為HiveSQL(簡(jiǎn)稱HQL),與關(guān)系型數(shù)據(jù)庫的SQL略有不同,但支持了絕大多數(shù)的語句如DDL、DML以及常見的聚合函數(shù)、連接查詢、條件查詢。本節(jié)任務(wù)使用HQL來實(shí)現(xiàn)基本的數(shù)據(jù)庫和數(shù)據(jù)表操作應(yīng)用。任務(wù)分析Hive用戶接口主要有3個(gè):CLI、Client和WUI,其中最常用的是CLI,CLI啟動(dòng)的時(shí)候,會(huì)同時(shí)啟動(dòng)一個(gè)Hive副本。所以我們使用CLI接口來完成基本的庫操作和表操作。4.3.2Hive數(shù)據(jù)庫操作Hive數(shù)據(jù)庫操作Hive對(duì)數(shù)據(jù)庫的操作,基本上與MySQL一致,基本語法如下。下面將完成一個(gè)簡(jiǎn)單操作數(shù)據(jù)庫的應(yīng)用案例。(1)創(chuàng)建一個(gè)名稱為hive_db_test的數(shù)據(jù)庫;(2)顯示hive中所有的數(shù)據(jù)庫列表;(3)切換到剛才新建的hive_db_test數(shù)據(jù)庫數(shù)據(jù)庫;(4)顯示當(dāng)前數(shù)據(jù)庫的信息;(5)刪除hive_db_test數(shù)據(jù)庫數(shù)據(jù)庫。CREATEDATABASE[IFNOTEXISTS]database_name;#創(chuàng)建數(shù)據(jù)庫SHOWdatabases;#顯示數(shù)據(jù)庫USEdatabase_name;#切換數(shù)據(jù)庫DESCdatabasedataBaseName;#顯示當(dāng)前數(shù)據(jù)庫的信息DROPDATABASE[IFEXISTS]database_name[RESTRICT|CASCADE];#刪除數(shù)據(jù)庫Hive數(shù)據(jù)庫操作效果如圖4-16所示。圖4-16Hive庫操作效果圖4.3.3Hive內(nèi)部表操作1.創(chuàng)建數(shù)據(jù)文件在master節(jié)點(diǎn)的/home創(chuàng)建一個(gè)/home/hive_data文件夾,在該文件夾下創(chuàng)建一個(gè)student.txt文件,如代碼4-22所示。代碼4-22編輯數(shù)據(jù)文件mkdir/home/hive_datacd/home/hive_datavistudent.txt#在文件中添加以下內(nèi)容,保存退出。1,張三,192,李四,183,王五,202.創(chuàng)建對(duì)應(yīng)的內(nèi)部表在Hive中創(chuàng)建一個(gè)hive_db數(shù)據(jù)庫,然后在該數(shù)據(jù)庫中創(chuàng)建一個(gè)名稱為student的數(shù)據(jù)表,結(jié)構(gòu)與數(shù)據(jù)文件的結(jié)構(gòu)一致,包含sid、sname、sage三個(gè)列。先使用hive命令打開HiveCLI客戶端。然后創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表,如代碼4-23所示。代碼4-23創(chuàng)建Hive表對(duì)象createdatabasehive_db;usehive_db;createtablestudent(sidint,snamestring,sageint)rowformatdelimitedfieldsterminatedby',';createdatabasehive_db;usehive_db;createtablestudent(sidint,snamestring,sageint)rowformatdelimitedfieldsterminatedby',';2.創(chuàng)建對(duì)應(yīng)的內(nèi)部表可以使用http://master:9870(Hadoop3.1.4版本)WebUI打開Hive內(nèi)部表所在的HDFS路徑進(jìn)程查看,如圖4-17所示,表中數(shù)據(jù)為空。表4-3環(huán)境變量文件的添加內(nèi)容3.添加數(shù)據(jù)可以使用類似SQL語句的HiveSQL(HQL)語句管理數(shù)據(jù),向student表添加三條數(shù)據(jù),如代碼4-24所示。代碼4-24Hiveinsert數(shù)據(jù)語法由于Hive的SQL語句需要轉(zhuǎn)換為MapReduce操作執(zhí)行,所以每執(zhí)行一條SQL語句,都需要比較長的時(shí)間完成任務(wù),效率很低。此處一條數(shù)據(jù)的出入操作過程如圖4-18所示。insertintostudent(sid,sname,sage)select1,’zhangsan’,19;insertintostudent(sid,sname,sage)select2,’lisi’,18;insertintostudent(sid,sname,sage)select3,’wangwu’,20;select*fromstudent;圖4-18Hive執(zhí)行insert操作過程3.添加數(shù)據(jù)當(dāng)添加數(shù)據(jù)完成后執(zhí)行查詢語句后,表中數(shù)據(jù)如圖4-19所示。也可以繼續(xù)通過WebUI的方式查詢數(shù)據(jù)存在HDFS的情況,如圖4-20所示。在student表對(duì)應(yīng)的HDFS的文件夾中,可以查詢到3個(gè)數(shù)據(jù)文件塊,每一個(gè)數(shù)據(jù)塊的大小為128MB(HDFS的最小存儲(chǔ)單位),每一個(gè)數(shù)據(jù)的實(shí)際大小為size標(biāo)注的數(shù)字,每一個(gè)數(shù)據(jù)的副本為2個(gè)(為我們?cè)陧?xiàng)目2中配置HadoopHDFS時(shí)設(shè)置的副本數(shù));3條數(shù)據(jù)3個(gè)數(shù)據(jù)塊是因?yàn)閕nsert語句是單獨(dú)執(zhí)行的,每一次執(zhí)行均產(chǎn)生一個(gè)獨(dú)立的數(shù)據(jù)塊。圖4-20導(dǎo)入HDFSWeb查看圖4-19數(shù)據(jù)查詢效果圖4.導(dǎo)入數(shù)據(jù)由于上面的操作中,可以看到,Hive執(zhí)行insert操作調(diào)用MapReduce操作執(zhí)行,效率非常低下,所以一般情況下,會(huì)使用批量導(dǎo)入的方式來新增數(shù)據(jù)。Hive提供了local命令來往數(shù)據(jù)表中導(dǎo)入數(shù)據(jù)。在第1步的數(shù)據(jù)文件中,文本數(shù)據(jù)有3行數(shù)據(jù),每一行數(shù)據(jù)的數(shù)據(jù)

項(xiàng)之間使用的是逗號(hào)分隔符;

在第2步創(chuàng)建內(nèi)部表中,

指定了表的選項(xiàng)行格式中也設(shè)定了列的分隔符為

,

,讀者需要注意這里的數(shù)據(jù)項(xiàng)數(shù)量,

和分隔符均需要前后一致,否則導(dǎo)入數(shù)據(jù)會(huì)出錯(cuò)。將/home/hive_data/student.txt文件中的數(shù)據(jù)導(dǎo)入到Hive的內(nèi)部表student中,并查詢,如代碼4-25所示,運(yùn)行結(jié)果如圖4-21所示。代碼4-25Hive導(dǎo)入數(shù)據(jù)圖4-21load數(shù)據(jù)效果圖loaddatalocalinpath'/home/hive_data/student.txt'intotablestudent;select*fromstudent;4.導(dǎo)入數(shù)據(jù)參考第3步,可以繼續(xù)通過WebUI的方式查詢數(shù)據(jù)存在HDFS的情況,如圖4-22所示。發(fā)現(xiàn)剛才的數(shù)據(jù)導(dǎo)入產(chǎn)生了一個(gè)新的數(shù)據(jù)塊記錄,里面包含導(dǎo)入的3條數(shù)據(jù)。圖4-21load數(shù)據(jù)效果圖謝謝餐飲數(shù)據(jù)統(tǒng)計(jì)分析主講:李強(qiáng)任務(wù)描述都市生活緊張忙碌,不少上班族已經(jīng)習(xí)慣于在餐飲外賣平臺(tái)上訂餐,外賣平臺(tái)的菜品種類豐富,提供各式風(fēng)味的美食。但是即便如此,由于個(gè)體的口味偏好及菜品質(zhì)量的差異,上班族們常常有不知道今天午餐應(yīng)該吃什么的煩惱。W餐飲外賣平臺(tái),向廣大用戶提供網(wǎng)上訂餐服務(wù),其市場(chǎng)占有量在近年不斷增加。當(dāng)用戶在W平臺(tái)訂餐完成后,平臺(tái)會(huì)引導(dǎo)用戶對(duì)于品嘗過的菜品進(jìn)行評(píng)價(jià)打分,最高為5分,最低為1分。為提高用戶的購買體驗(yàn),平臺(tái)需要對(duì)用戶的在平臺(tái)上的打分?jǐn)?shù)據(jù)、以及平臺(tái)的相關(guān)菜品數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,在后續(xù)的菜品推送時(shí)能有所依據(jù)。本小節(jié)通過平臺(tái)收集的用戶評(píng)分?jǐn)?shù)據(jù),分析外賣平臺(tái)的受歡迎度、客戶的體驗(yàn)度。任務(wù)分析本小節(jié)將從如下的分析操作,分析外賣平臺(tái)的受歡迎度、客戶的體驗(yàn)度。(1)根據(jù)用戶評(píng)分?jǐn)?shù)據(jù)統(tǒng)計(jì)日銷量和日用戶量。(2)統(tǒng)計(jì)同時(shí)有評(píng)分和評(píng)分內(nèi)容的記錄。(3)分析用戶的評(píng)分分布情況。(4)統(tǒng)計(jì)10大熱銷菜品。(5)統(tǒng)計(jì)10大評(píng)分為5的熱銷菜品。(6)統(tǒng)計(jì)單日評(píng)分超過2次的用戶數(shù)。(7)找出評(píng)分次數(shù)超過兩次的用戶中,每個(gè)用戶評(píng)分最高的記錄。4.4.1數(shù)據(jù)說明數(shù)據(jù)說明因?yàn)闃I(yè)務(wù)數(shù)據(jù)的安全原因,用戶評(píng)分?jǐn)?shù)據(jù)集的數(shù)據(jù)已做了脫敏處理,只保留部分重要屬性,其各屬性及說明如表4-7所示。表4-7用戶評(píng)分?jǐn)?shù)據(jù)屬性及其說明屬性名稱屬性說明UserID用戶IDMealID菜品IDRating評(píng)分ReviewTime評(píng)分的時(shí)間戳Review評(píng)價(jià)內(nèi)容數(shù)據(jù)說明另外,在網(wǎng)站的后臺(tái)數(shù)據(jù)庫(MySQL)中保存著菜品的數(shù)據(jù)集,其數(shù)據(jù)內(nèi)容如圖4-23所示,導(dǎo)出后形成Parquet文件。在用戶評(píng)分?jǐn)?shù)據(jù)集中,保存了用戶對(duì)菜品的評(píng)分信息,很大程度上反映了用戶對(duì)菜品的興趣度,因此這份數(shù)據(jù)將作為統(tǒng)計(jì)分析的主要數(shù)據(jù)源。圖4-23菜品數(shù)據(jù)集4.4.2創(chuàng)建數(shù)據(jù)表并導(dǎo)入數(shù)據(jù)創(chuàng)建數(shù)據(jù)表并導(dǎo)入數(shù)據(jù)將用戶評(píng)分?jǐn)?shù)據(jù)realrating.parquet和菜品數(shù)據(jù)meal_list.txt上傳至Linux系統(tǒng)的/opt目錄下,啟動(dòng)Hadoop集群、MySQL服務(wù)、MetaStore服務(wù),打開HiveCLI,在命令行窗口進(jìn)行菜品數(shù)據(jù)表meal_list和用戶評(píng)分?jǐn)?shù)據(jù)表meal_rating的創(chuàng)建并導(dǎo)入相應(yīng)數(shù)據(jù),如代碼4-26所示。代碼4-26創(chuàng)建數(shù)據(jù)表并導(dǎo)入數(shù)據(jù)createdatabasemeal;usemeal;--創(chuàng)建菜單表createtablemeal_list(idint,MealIdstring,mealnamestring)rowformatdelimitedfieldsterminatedby',';--導(dǎo)入數(shù)據(jù)loaddatalocalinpath'/opt/meal_list.txt'overwriteintotablemeal_list;......省略創(chuàng)建數(shù)據(jù)表并導(dǎo)入數(shù)據(jù)導(dǎo)入數(shù)據(jù)后,可使用select語句查詢前5行數(shù)據(jù),檢驗(yàn)一下,查詢結(jié)果如圖4-24所示。圖4-24查詢數(shù)據(jù)表前5行數(shù)據(jù)4.4.3統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)根據(jù)用戶評(píng)分?jǐn)?shù)據(jù),使用日期函數(shù)from_unixtime與cast實(shí)現(xiàn)日期格式的轉(zhuǎn)換,在通過聚合函數(shù)count,結(jié)合分組關(guān)鍵字groupby實(shí)現(xiàn)日銷量和日用戶量的統(tǒng)計(jì),最后使用排序關(guān)鍵字orderby對(duì)日期進(jìn)行升序輸出,如代碼4-27所示。代碼4-27統(tǒng)計(jì)日銷量和日用戶量selectymd,count(1)asdaycount,count(distinctuserid)asusercountfrom(select*,from_unixtime(cast(reviewtimeasbigint),'yyyy-MM-dd')asymdfrommeal_rating)tmpgroupbyymdorderbyymd;部分運(yùn)行結(jié)果如圖4-25所示,其中菜品日銷量比日用戶量普遍都高,意味著存在有部分用戶在一天內(nèi)購買同一種菜品的現(xiàn)象。圖4-25日銷量和日用戶量部分統(tǒng)計(jì)結(jié)果統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)通過使用聚合函數(shù)count,結(jié)合條件篩選關(guān)鍵字where,統(tǒng)計(jì)同時(shí)有評(píng)分和評(píng)分內(nèi)容的記錄,如代碼4-28所示。代碼4-28查詢同時(shí)有評(píng)分和評(píng)分內(nèi)容的記錄統(tǒng)計(jì)結(jié)果如圖4-26所示,使用聚合函數(shù)count統(tǒng)計(jì)用戶評(píng)分?jǐn)?shù)據(jù)表meal_rating的總數(shù)據(jù)量為38383,意味著用戶評(píng)分?jǐn)?shù)據(jù)表中的所有記錄均有評(píng)分與評(píng)分內(nèi)容。使用聚合函數(shù)對(duì)用戶評(píng)分?jǐn)?shù)據(jù)表分析用戶的評(píng)分分布情況,如代碼4-29所示。代碼4-29創(chuàng)建手游被關(guān)注信息表selectcount(*)frommeal_ratingwherereviewisnotnullandratingisnotnull;圖4-26查詢同時(shí)有評(píng)分和評(píng)分內(nèi)容的記錄selectrating,count(1),round(count(1)/38383*100,2)asusercountfrommeal_ratinggroupbyrating;selectmax(rating)asmaxrating,min(rating)asminrating,round(avg(rating),3)asavgrating,round(stddev(rating),3)asstdratingfrommeal_rating;統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)由圖4-27可知,54.77%的用戶在評(píng)分時(shí)都會(huì)打5分,其中打3分的用戶超過90%;由圖

4-28可知,用戶評(píng)分的最大值為5分,最小值為1分,平均值為4.19分,標(biāo)準(zhǔn)差為1.118分,說明了用戶評(píng)分的數(shù)值數(shù)據(jù)較為集中,結(jié)合平均值為4.19分,可以推斷,評(píng)分?jǐn)?shù)值數(shù)據(jù)較多為4、5分,即由圖4-27所展示的情況。圖4-28用戶評(píng)分分布情況2圖4-27用戶評(píng)分分布情況1使用分組關(guān)鍵字groupby對(duì)菜品ID進(jìn)行分組,結(jié)合聚合函數(shù)count統(tǒng)計(jì)記錄數(shù),然后使用排序關(guān)鍵字orderby降序輸出10條數(shù)據(jù),實(shí)現(xiàn)統(tǒng)計(jì)10大熱銷菜品,如代碼4-30所示。代碼4-30統(tǒng)計(jì)10大熱銷菜品1selectmealid,count(1)asmealcountfrommeal_ratinggroupbymealidorderbymealcountdesclimit10;統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)運(yùn)行結(jié)果如圖4-29所示,第1列數(shù)據(jù)為菜品ID,第2列數(shù)據(jù)即為銷售數(shù)據(jù)?;诖a4-30的分析思路,使用聯(lián)合關(guān)鍵字join,連接菜品數(shù)據(jù)表meal_list,輸出10大熱銷菜品與其對(duì)應(yīng)菜品名稱,如代碼4-31所示。代碼4-31統(tǒng)計(jì)10大熱銷菜品2圖4-2910大熱銷菜品統(tǒng)計(jì)情況1selecta.mealid,a.mealcount,b.mealnamefrom(selectmealid,count(1)asmealcountfrommeal_ratinggroupbymealidorderbymealcountdesclimit10)ajoinmeal_listbona.mealid=b.mealid;參考代碼4-31的分析思路,實(shí)現(xiàn)統(tǒng)計(jì)10大評(píng)分為5的熱銷菜品,如代碼4-32所示,運(yùn)行結(jié)果如圖4-31所示。代碼4-32統(tǒng)計(jì)10大評(píng)分為5的熱銷菜品selecta.mealid,a.mealcount,b.mealnamefrom(selectmealid,count(1)asmealcountfrommeal_ratingwhererating=5groupbymealidorderbymealcountdesclimit10)ajoinmeal_listbona.mealid=b.mealid;圖4-3110大評(píng)分為5的熱銷菜品統(tǒng)計(jì)情況統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)為提高查詢效率,創(chuàng)建一張視圖meal_rating_ymd,內(nèi)容為用戶評(píng)分?jǐn)?shù)據(jù)表的所有數(shù)據(jù)與進(jìn)行了格式轉(zhuǎn)換的日期;對(duì)創(chuàng)建好的視圖使用聚合函數(shù)count,結(jié)合條件篩選關(guān)鍵字having,實(shí)現(xiàn)統(tǒng)計(jì)單日評(píng)分超過2次的用戶數(shù),如代碼4-33所示。代碼4-33統(tǒng)計(jì)單日評(píng)分超過2次的用戶數(shù)圖4-32統(tǒng)計(jì)單日評(píng)分超過2次的用戶數(shù)情況createviewmeal_rating_ymdasselect*,from_unixtime(cast(reviewtimeasbigint),'yyyy-MM-dd')asymdfrommeal_rating;selectcount(distinctuserid)from(selectymd,userid,count(1)asratingcountfrommeal_rating_ymdgroupbyymd,useridhavingratingcount>2)tmp;運(yùn)行結(jié)果如圖4-32所示,總計(jì)2231名用戶單日評(píng)分超過兩次,結(jié)合用戶評(píng)分?jǐn)?shù)據(jù)表的中數(shù)據(jù)量38383,單日評(píng)分超過兩次的用戶所占比例約為5.81%,數(shù)據(jù)較小,說明很少有用戶在一天內(nèi)評(píng)分兩次。使用聚合函數(shù)count統(tǒng)計(jì)記錄數(shù),分析函數(shù)rank對(duì)通過over()子句劃分的分區(qū)進(jìn)行數(shù)據(jù)排名,實(shí)現(xiàn)統(tǒng)計(jì)查詢每個(gè)用戶評(píng)分最高的記錄,如代碼4-34所示,運(yùn)行結(jié)果如圖4-32所示。統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)代碼4-34統(tǒng)計(jì)每個(gè)用戶評(píng)分最高的記錄圖4-33每個(gè)用戶評(píng)分最高的記錄統(tǒng)計(jì)情況select*,count(1)over(partitionbyuserid)asratingcount,rank()over(partitionbyuseridorderbyratingdesc)asratingrankfrommeal_ratinglimit20;統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)基于代碼4-34的分析思路,使用條件篩選關(guān)鍵字where找出評(píng)分次數(shù)超過兩次的用戶中,每個(gè)用戶評(píng)分最高的記錄,如代碼4-35所示,部分運(yùn)行結(jié)果如圖4-34所示。代碼4-35在評(píng)分次數(shù)超過兩次的用戶中每個(gè)用戶評(píng)分最高的記錄圖4-34在評(píng)分次數(shù)超過兩次的用戶中每個(gè)用戶評(píng)分最高的記錄select*from(select*,count(1)over(partitionbyuserid)asratingcount,rank()over(partitionbyuseridorderbyratingdesc)asratingrankfrommeal_rating)tmpwhereratingcount>2andratingrank=1;統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)基于代碼4-35的分析思路,找出評(píng)分次數(shù)超過兩次的用戶中,每個(gè)用戶評(píng)分最高、時(shí)間最近的一條記錄,如代碼4-36所示,部分運(yùn)行結(jié)果如圖4-35所示。代碼4-36在評(píng)分次數(shù)超過兩次的用戶中每個(gè)用戶評(píng)分最高、時(shí)間最近的一條記錄圖4-35在評(píng)分次數(shù)超過兩次的用戶中每個(gè)用戶評(píng)分最高、時(shí)間最近的一條記錄select*from(select*,count(1)over(partitionbyuserid)asratingcount,row_number()over(partitionbyuseridorderbyratingdesc,cast(reviewtimeasbigint)desc)asratingrankfrommeal_rating)tmpwhereratingcount>2andratingrank=1;統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)若是想保存代碼4-36執(zhí)行后的數(shù)據(jù),可以基于代碼4-36,先創(chuàng)建一張視圖tmp,存儲(chǔ)數(shù)據(jù),這樣可以有效地提高查詢數(shù)據(jù)的效率;然后使用insertoverwrite命令將視圖tmp的所有數(shù)據(jù)導(dǎo)出至Linux本地目錄/opt/userrating下,如代碼4-37所示。代碼4-37UseCountReducer.javacreateviewtmpasselect*from(select*,count(1)over(partitionbyuserid)asratingcount,row_number()over(partitionbyuseridorderbyratingdesc,cast(reviewtimeasbigint)desc)asratingrankfrommeal_rating)tmpwhereratingcount>2andratingrank=1;insertoverwritelocaldirectory'/opt/userrating'rowformatdelimitedfieldsterminatedby','select*fromtmp;統(tǒng)計(jì)分析任務(wù)實(shí)現(xiàn)執(zhí)行完代碼4-37,在Linux系統(tǒng)目錄/opt下就有自動(dòng)創(chuàng)建的userrating目錄,/opt/userrating目錄下有存儲(chǔ)著所導(dǎo)出數(shù)據(jù)的000000_0文件,使用cat命令即可查看該文件,部分?jǐn)?shù)據(jù)如圖

4-36所示。圖4-36查看導(dǎo)出文件的部分?jǐn)?shù)據(jù)謝謝ZooKeeper的分布式搭建部署管理任務(wù)描述本任務(wù)將實(shí)現(xiàn)安裝ZooKeeper、修改ZooKeeper分布式集群的配置選項(xiàng),并管理ZooKeeper分布式集群的啟動(dòng)和關(guān)閉等以及其他相關(guān)配置內(nèi)容。任務(wù)分析ZooKeeper分布式集群安裝部署指的是ZooKeeper分布式模式安裝。ZooKeeper集群搭建通常是由2n+1臺(tái)服務(wù)器組成,這是為了保證Leader選舉(基于Paxos算法的實(shí)現(xiàn))能夠通過半數(shù)以上臺(tái)服務(wù)器選舉支持,因此,ZooKeeper集群的數(shù)量一般為奇數(shù)臺(tái),本手冊(cè)采用3個(gè)節(jié)點(diǎn)集群模式。由于ZooKeeper集群運(yùn)行需要Java環(huán)境支持,所以要提前安裝JDK(對(duì)于JDK的下載安裝請(qǐng)參見本手冊(cè)項(xiàng)目1)。5.1.1master節(jié)點(diǎn)安裝ZooKeeper組件1.解壓安裝文件本手冊(cè)所使用的版本是ZooKeeper3.6.3,可以從官網(wǎng)下載。下載好的安裝包都需上傳到指定目錄下,本手冊(cè)指定為/root/目錄,使用ls/root/命令可以查看上傳的安裝包(具體上傳方式請(qǐng)參考項(xiàng)目1),如圖5-1所示。使用tar命令解壓zookeeper到/usr/local/src文件夾,并切換到安裝目錄下查看,可以使用ls查看解壓后的效果,如代碼5-1所示,效果如圖5-2所示。代碼5-1解壓安裝包圖5-2查看解壓好的安裝包圖5-1查看安裝包tar-zxvf/root/apache-zookeeper-3.6.3-bin.tar.gz-C/usr/local/src/cd/usr/local/src/ls2.修改文件夾名稱由于解壓后的文件夾名稱帶有比較復(fù)雜的版本號(hào),為了簡(jiǎn)化后續(xù)配置,此處修改文件夾名稱。使用mv命令將解壓的apache-zookeeper-3.6.3-bin目錄重命名為zookeeper,如代碼5-2所示,效果如圖5-3所示:代碼5-2重命名文件夾圖5-3重命名文件夾cd/usr/local/src/mvapache-zookeeper-3.6.3-binzookeeper3.修改環(huán)境變量文件為了可以在任何目錄下直接執(zhí)行ZooKeeper的相關(guān)命令,可以在環(huán)境變量文件中添加ZooKeeper的環(huán)境變量。前面項(xiàng)目已經(jīng)說明過,本手冊(cè)在/root/.bash_profile文件操作,修改環(huán)境變量文件如代碼5-3所示。代碼5-3編輯環(huán)境配置文件表5-1環(huán)境變量文件的添加內(nèi)容vi/root/.bash_profile將如表5-1所示的配置信息添加到/root/.bash_profile文件的末尾,保存退出。#setzookeeperenvironmentexportZOOKEEPER_HOME=/usr/local/src/zookeeperexportPATH=$PATH:$ZOOKEEPER_HOME/bin4.生效環(huán)境變量文件為了刷新環(huán)境變量文件的配置,需要在master節(jié)點(diǎn)執(zhí)行下面的命令使得節(jié)點(diǎn)的環(huán)境變量文件生效,如代碼5-4所示。代碼5-4生效環(huán)境配置文件source/root/.bash_profile5.1.2master節(jié)點(diǎn)配置ZooKeeper1.創(chuàng)建數(shù)據(jù)文件夾由于在后面的配置文件中需要配置服務(wù)運(yùn)行的數(shù)據(jù)和日志存放路徑,使用如代碼5-5所示的命令創(chuàng)建數(shù)據(jù)文件和日志文件的目錄,并查看文件屬性,運(yùn)行結(jié)果如圖5-4所示。。代碼5-5創(chuàng)建文件夾文件圖5-4查看創(chuàng)建好的文件夾mkdir/usr/local/src/zookeeper/datamkdir/usr/local/src/zookeeper/logscd/usr/local/src/zookeeperll2.寫入節(jié)點(diǎn)編號(hào)每一個(gè)ZooKeeper分布式集群都是由多臺(tái)服務(wù)器節(jié)點(diǎn)組成,這些節(jié)點(diǎn)通過復(fù)制保證各個(gè)服務(wù)器節(jié)點(diǎn)之間的數(shù)據(jù)一致。每個(gè)服務(wù)器節(jié)點(diǎn)需要配置一個(gè)唯一的編號(hào),在本任務(wù)中,3個(gè)節(jié)點(diǎn)的編號(hào)分為為1,2,3,這里首先通過echo命令設(shè)置master節(jié)點(diǎn)編號(hào)為1,設(shè)置后使用cat命令查詢確認(rèn),如代碼5-6所示,運(yùn)行結(jié)果如圖5-5所示。代碼5-6寫入節(jié)點(diǎn)編號(hào)并查看圖5-5寫入節(jié)點(diǎn)編號(hào)并查看echo1>/usr/local/src/zookeeper/data/myidcat/usr/local/src/zookeeper/data/myid3.修改配置文件zoo.cfg使用vizoo.cfg命令對(duì)該文件內(nèi)容進(jìn)行修改,修改的內(nèi)容如表5-2所示。將修改的內(nèi)容保存退出。表5-2配置文件的添加內(nèi)容dataDir=/usr/local/src/zookeeper/data#修改原值server.1=master:2888:3888#新增server.2=slave1:2888:3888#新增server.3=slave2:2888:3888#新增3.修改配置文件zoo.cfgZooKeeper分布式集群的其他配置信息在安裝目錄下的conf/zoo.cfg中,在配置文件夾中有一個(gè)模板文件zoo_sample.cfg,首先需要將該文件復(fù)制為zoo.cfg,如代碼5-7所示,運(yùn)行結(jié)果如圖

5-6所示。代碼5-7復(fù)制配置文件圖5-5寫入節(jié)點(diǎn)編號(hào)并查看cd/usr/local/src/zookeeper/conflscpzoo_sample.cfgzoo.cfgls5.1.3Slave節(jié)點(diǎn)安裝與配置ZooKeeper組件1.同步文件到Slave節(jié)點(diǎn)ZooKeeper分布式集群需要在所有節(jié)點(diǎn)上配置,將配置好的zookeeper文件夾和環(huán)境變量文件發(fā)送到slave1和slave2節(jié)點(diǎn),如代碼5-8所示。代碼5-8同步配置Slave節(jié)點(diǎn)scp-r/usr/local/src/zookeeper/slave1:/usr/local/src/scp-r/usr/local/src/zookeeper/slave2:/usr/local/src/scp/root/.bash_profileslave1:/root/scp/root/.bash_profileslave2:/root/2.生效環(huán)境變量文件為了刷新環(huán)境變量文件的配置,需要在slave1和slave2節(jié)點(diǎn)節(jié)點(diǎn)分別執(zhí)行下面的命令使得兩個(gè)節(jié)點(diǎn)的環(huán)境變量文件生效,如代碼5-9所示。代碼5-9生效環(huán)境配置文件source/root/.bash_profile3.修改從節(jié)點(diǎn)的編號(hào)分發(fā)到Slave節(jié)點(diǎn)的myid文件內(nèi)容編號(hào)為1,需要修改slave1節(jié)點(diǎn)的myid編號(hào)為2,如代碼5-10所示,運(yùn)行結(jié)果如圖5-7所示。代碼5-10修改slave1的編號(hào)并查看echo2>/usr/local/src/zookeeper/data/myidcat/usr/local/src/zookeeper/data/myid圖5-7修改slave1的編號(hào)并查看3.修改從節(jié)點(diǎn)的編號(hào)分發(fā)到Slave節(jié)點(diǎn)的myid文件內(nèi)容編號(hào)為1,需要修改slave2節(jié)點(diǎn)的myid編號(hào)為3,如代碼5-11所示,運(yùn)行結(jié)果如圖5-8代碼5-11修改slave2的編號(hào)并查看echo3>/usr/local/src/zookeeper/data/myidcat/usr/local/src/zookeeper/data/myid圖5-8修改slave2的編號(hào)并查看5.1.4管理ZooKeeper服務(wù)1.啟動(dòng)ZooKeeper服務(wù)截止目前ZooKeeper集群安裝配置完成操作,現(xiàn)在可以啟動(dòng)ZooKeeper服務(wù)。啟動(dòng)ZooKeeper服務(wù)需要在所有節(jié)點(diǎn)上分別啟動(dòng),一般建議接連啟動(dòng)所有的節(jié)點(diǎn)。啟動(dòng)ZooKeeper命令,如代碼5-12所示。代碼5-12啟動(dòng)ZooKeeperzkServer.shstart圖5-9查看進(jìn)程啟動(dòng)后可以通過jps查看Java進(jìn)程,如圖5-9所示,發(fā)現(xiàn)進(jìn)程列表中多了QuorumPeerMain進(jìn)程,這是ZooKeeper集群的啟動(dòng)類。啟動(dòng)成功后,可以在所有節(jié)點(diǎn)上查詢節(jié)點(diǎn)的角色,每一次啟動(dòng)后每個(gè)節(jié)點(diǎn)的角色不盡相同,只要確保在集群中有一個(gè)正常的Leader角色就行。代碼5-13查看ZooKeeper服務(wù)狀態(tài)zkServer.shstatus1.啟動(dòng)ZooKeeper服務(wù)master節(jié)點(diǎn)的角色如圖5-10所示。slave1節(jié)點(diǎn)的角色如圖5-11所示。slave2節(jié)點(diǎn)的角色如圖5-12所示。由圖5-10、圖5-11、圖5-12,可以看到三個(gè)節(jié)點(diǎn)的狀態(tài)分別為Follower、Leader、Follower。三個(gè)節(jié)點(diǎn)中包括一個(gè)Leader和兩個(gè)Follower,Leader是根據(jù)ZooKeeper內(nèi)部算法進(jìn)行選舉,每個(gè)節(jié)點(diǎn)的具體狀態(tài)不固定。圖5-10查看master的ZooKeeper狀態(tài)圖5-11查看slave1的ZooKeeper狀態(tài)圖5-12查看slave2的ZooKeeper狀態(tài)2.關(guān)閉ZooKeeper服務(wù)如果想關(guān)閉ZooKeeper服務(wù)也需要在所有節(jié)點(diǎn)上分別關(guān)閉,如代碼5-14所示。代碼5-14關(guān)閉ZooKeeperzkServer.shstop謝謝服務(wù)器上下線動(dòng)態(tài)監(jiān)控主講:李強(qiáng)任務(wù)描述本小節(jié)將介紹一個(gè)簡(jiǎn)單的ZooKeeper的案例應(yīng)用。一般大數(shù)據(jù)場(chǎng)景都是分布式系統(tǒng),因此節(jié)點(diǎn)有多個(gè)。考慮到ZooKeeper作為分布式的協(xié)調(diào)框架可用作監(jiān)控系統(tǒng),監(jiān)控多個(gè)節(jié)點(diǎn)的狀態(tài),因此,這里將使用ZooKeeper模擬監(jiān)控服務(wù)器上下線動(dòng)態(tài)情況。任務(wù)分析通過IDEA配置好連接ZooKeeper集群的開發(fā)環(huán)境后,創(chuàng)建一個(gè)類Server,在此類中連接ZooKeeper集群,創(chuàng)建一個(gè)父節(jié)點(diǎn)“./Server”,并設(shè)置可變參數(shù)動(dòng)態(tài)創(chuàng)建臨時(shí)子節(jié)點(diǎn),可通過IDEA提供的參數(shù)設(shè)置進(jìn)行子節(jié)點(diǎn)的添加;創(chuàng)建一個(gè)類Client,由于監(jiān)控父節(jié)點(diǎn)“./Server”的子節(jié)點(diǎn)的上下線動(dòng)態(tài)。5.2.1創(chuàng)建IDEA工程并連接ZooKeeper創(chuàng)建IDEA工程并連接ZooKeeper參考項(xiàng)目3,在IDEA中新建一個(gè)Maven工程,并命名為ZooKeeperPro,創(chuàng)建完畢后,只需要在pom.xml文件中添加ZooKeeper依賴,如表5-3所示,添加完成后需加載依賴。表5-3添加依賴<dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.6.3</version></dependency></dependencies>5.2.2任務(wù)實(shí)現(xiàn)任務(wù)實(shí)現(xiàn)在IDEA工程/src/main/java目錄下創(chuàng)建一個(gè)package名為OnlineMonitoring,首先創(chuàng)建一個(gè)類Server,該類用于連接ZooKeeper集群,創(chuàng)建一個(gè)“/Server”父節(jié)點(diǎn),并設(shè)置可變參數(shù)為動(dòng)態(tài)創(chuàng)建臨時(shí)子節(jié)點(diǎn),如代碼5-15所示。代碼5-15Server類代碼publicclassServerimplementsWatcher{publicstaticvoidmain(String[]args)throwsIOException,KeeperException,InterruptedException{ZooKeeperzooKeeper=newZooKeeper("slave1:2181,slave2:2181,slave3:2181",5000,newServer());//創(chuàng)建持久化服務(wù)節(jié)點(diǎn)ServerStatexists=zooKeeper.exists("/Server",false);if(exists==null){zooKeeper.create("/Server","Hello".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);}......省略任務(wù)實(shí)現(xiàn)接著再創(chuàng)建一個(gè)類Client作為客戶端,該類主要獲取子節(jié)點(diǎn)信息,并設(shè)置程序不關(guān)閉,即可動(dòng)態(tài)監(jiān)控子節(jié)點(diǎn)變化情況,如代碼5-16所示。代碼5-16Client類代碼publicclassClientimplementsWatcher{publicstaticZooKeeperzooKeeper;publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{zooKeeper=newZooKeeper("slave1:2181,slave2:2181,slave3:2181",5000,newClient());Thread.sleep(Long.MAX_VALUE);}......省略任務(wù)實(shí)現(xiàn)在執(zhí)行服務(wù)端之前,需要設(shè)置main()方法的參數(shù),單擊IDEA菜單欄“Run”按鈕,在彈框中選擇“EditConfigurations…”,如圖5-13所示。圖5-13打開“EditConfigurations…”任務(wù)實(shí)現(xiàn)接著在彈框中左側(cè)選中Sever類,并在右側(cè)的“Programarguments”中輸入“0010”,注意參數(shù)間需要用空格隔開,如圖5-14所示。圖5-14設(shè)置Server類main()方法參數(shù)任務(wù)實(shí)現(xiàn)執(zhí)行Server類后,再執(zhí)行Client類,即可檢測(cè)到“001”子節(jié)點(diǎn),如圖5-15所示。圖5-15查看在線用戶1如果關(guān)閉Server類,那么臨時(shí)子節(jié)點(diǎn)“001”將會(huì)消失,這時(shí)Client端將更新,在線的用戶為空,如圖5-16所示。圖5-16查看在線用戶2任務(wù)實(shí)現(xiàn)若更改Server類的main()方法參數(shù)為“0021”,即將圖5-14中的參數(shù)“0010”修改為“0021”,再次執(zhí)行Server類,那么Client端將檢測(cè)到在線的用戶為“002”,如圖5-17所示。圖5-17查看在線用戶3謝謝HBase安裝與配置任務(wù)描述HBase分布式數(shù)據(jù)庫需要運(yùn)行在Hadoop完全分布式集群和ZooKeeper分布式協(xié)調(diào)服務(wù)框架上,所以在本任務(wù)中,完成該組件的基本安裝后,主要是針對(duì)Hadoop集群及ZooKeeper集群的相關(guān)屬性配置,以及HBase本身的集群框架部署。任務(wù)分析由于Hadoop版本和HBase版本之間的兼容性問題,如果是Hadoop2.7.7版本基本與目前HBase的各版本均兼容,但是Hadoop3.1.4版本只兼容HBase2.3.X和HBase2.4.X,所以本項(xiàng)目選擇HBase2.4.11版本部署。6.1.1master節(jié)點(diǎn)安裝HBase組件1.解壓安裝文件本手冊(cè)所使用的版本是HBase2.4.11,可以從HBase官網(wǎng)下載。下載好的安裝包都需上傳到指定目錄下,本手冊(cè)指定為/root/目錄,使用ls/root/命令可以查看上傳的安裝包(具體上傳方式請(qǐng)參考項(xiàng)目1),如圖6-1所示。圖6-1查看安裝包1.解壓安裝文件使用tar命令解壓HBase到/usr/local/src文件夾,并切換到安裝目錄下查看,可以使用ls查看解壓后的效果,如代碼6-1所示,效果如圖6-2所示。代碼6-1解壓安裝包圖6-2查看解壓好的安裝包tar-zxvfhbase-2.4.11-bin.tar.gz-C/usr/local/src/ls/usr/local/src/2.修改文件夾名稱由于解壓后的文件夾名稱帶有比較復(fù)雜的版本號(hào),為了簡(jiǎn)化后續(xù)配置,此處修改文件夾名稱。使用mv命令將解壓的hbase-2.4.11目錄重命名為hbase,如代碼6-2所示,效果如圖6-3所示。代碼6-2重命名文件夾圖6-3重命名文件夾mv/usr/local/src/hbase-2.4.11/usr/local/src/hbasels3.修改環(huán)境變量文件為了可以在任何目錄下直接執(zhí)行HBase的相關(guān)命令,可以在環(huán)境變量文件中添加HBase的環(huán)境變量。參考項(xiàng)目2,使用vi/root/.bash_profile將如表6-1所示的配置信息添加到/root/.bash_profile文件的末尾,保存退出。表6-1環(huán)境變量文件的添加內(nèi)容#setHBaseenvironmentexportHBASE_HOME=/usr/local/src/hbaseexportPATH=$HBASE_HOME/bin:$PATH4.生效用戶環(huán)境變量文件在master節(jié)點(diǎn)上運(yùn)行如代碼6-3所示的命令,使master節(jié)點(diǎn)上配置的HBase的環(huán)境變量生效。代碼6-3master節(jié)點(diǎn)生效環(huán)境變量source/root/.bash_profile6.1.2master節(jié)點(diǎn)修改配置文件1.修改hbase-env.sh配置文件hbase-env.sh是HBase執(zhí)行時(shí)去加載Hadoop環(huán)境變量和ZooKeeper的配置文件,用于指定Hadoop環(huán)境變量和ZooKeeper配置,修改文件內(nèi)容,如代碼6-4所示。代碼6-4修改hbase-env.sh文件cd/usr/local/src/hbase/conf/vihbase-env.sh該文件中需要修改三處設(shè)置:首先是JAVA_HOME需要設(shè)置為項(xiàng)目1中安裝java的路徑;同時(shí)將HBase_CLASSPATH配置為項(xiàng)目2中安裝的Hadoop路徑;HBase_MANAGES_ZK在配置文件偏后的位置,讀者需要自行查找,其默認(rèn)值為true表示使用HBase自帶的ZooKeeper,需要改為false表示使用在Hadoop上裝的ZooKeeper服務(wù)。另外請(qǐng)注意將配置項(xiàng)前面的“#”去掉,具體設(shè)置參考內(nèi)容,如表6-2所示。表6-2文件的添加內(nèi)容exportJAVA_HOME=/usr/local/src/java#修改Java安裝位置exportHBASE_CLASSPATH=/usr/local/src/hadoop/etc/hadoop/#修改HBase類路徑exportHBASE_MANAGES_ZK=false#修改true為falseexportHBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"#去掉前面的#2.修改hbase-site.xml配置文件hbase-site.xml是HBase集群運(yùn)行必須的核心配置文件,用于配置Hadoop集群相關(guān)和ZooKeeper集群相關(guān)的屬性,修改文件,如代碼6-5所示。代碼6-5修改hbase-site.xmlcd/usr/local/src/hbase/conf/vihbase-site.xml2.修改hbase-site.xml配置文件可以將文件中<configuration>和</configuration>一對(duì)標(biāo)簽之間的配置項(xiàng)內(nèi)容先刪除,然后追加配置信息,如表6-3所示,保存退出。表6-3HBase-site.xml配置文件的修改內(nèi)容<property><name>hbase.rootdir</name><value>hdfs://master:9000/hbase</value>#使用9000端口</property><property><name>.port</name><value>60010</value>#使用master節(jié)點(diǎn)60010端口</property><property><name>hbase.ZooKperty.clientPort</name><value>2181</value>#使用master節(jié)點(diǎn)2181端口</property>......省略2.修改hbase-site.xml配置文件該文件需要添加的配置項(xiàng)參數(shù),如表6-4所示。表6-3HBase-site.xml配置文件的修改內(nèi)容序號(hào)配置項(xiàng)默認(rèn)值修改值1hbase.rootdir${hbase.tmp.dir}/HBasehdfs://master:9000/hbase2.port16000600103hbase.ZooKperty.clientPortlocalhost21814ZooKeeper.session.timeout600001200005hbase.ZooKeeper.quorumlocalhostmaster,slave1,slave26hbase.tmp.dirjava.io.tmpdir/HBase?{}/usr/local/src/hbase/tmp7hbase.cluster.distributedfalsetrue3.創(chuàng)建臨時(shí)數(shù)據(jù)文件夾由于在上面的配置文件中配置了HBase的臨時(shí)文件夾信息,使用如代碼6-6錯(cuò)誤!未找到引用源。所示的命令創(chuàng)建臨時(shí)文件夾目錄。代碼6-6創(chuàng)建文件夾文件mkdir/usr/local/src/hbase/tmp4.修改regionservers文件可以將文件中<configuration>和</configurataregionservers文件中標(biāo)識(shí)HBase集群中的從節(jié)點(diǎn),使用“viregionservers”刪除該文件中原有“l(fā)ocalhost”內(nèi)容,在文件中追加配置信息,如表6-5所示,保存退出。ion>一對(duì)標(biāo)簽之間的配置項(xiàng)內(nèi)容先刪除,然后追加配置信息,如表6-3所示,保存退出。請(qǐng)注意:regionservers文件中添加的內(nèi)容結(jié)尾不允許有空格,文件中不允許有空行。表6-3HBase-site.xml配置文件的修改內(nèi)容slave1slave26.1.3在Slave節(jié)點(diǎn)安裝HBase1.同步配置文件到Slave節(jié)點(diǎn)將master上配置好的HBase文件夾內(nèi)容和環(huán)境變量文件分別分發(fā)到slave1和slave2節(jié)點(diǎn),分發(fā)命令,如代碼6-7所示。代碼6-7分發(fā)HBase配置scp-r/usr/local/src/hbaseslave1:/usr/local/src/scp-r/usr/local/src/hbaseslave2:/usr/local/src/scp/root/.bash_profileslave1:/root/scp/root/.bash_profileslave2:/root/2.生效用戶環(huán)境變量文件在每個(gè)節(jié)點(diǎn)上運(yùn)行如代碼6-8所示的命令,使每個(gè)節(jié)點(diǎn)上配置的HBase的環(huán)境變量生效。代碼6-8Slave節(jié)點(diǎn)生效環(huán)境變量文件source/root/.bash_profile6.1.4啟動(dòng)HBase集群?jiǎn)?dòng)HBase集群?jiǎn)?dòng)HBase之前,需要先啟動(dòng)Hadoop集群、ZooKeeper集群。請(qǐng)讀者自行確定是否啟動(dòng)了Hadoop和ZooKeeper集群(參考項(xiàng)目2和項(xiàng)目5)。啟動(dòng)HBase之前,先用jps查看master和slave1的Java進(jìn)程情況,如圖6-4、圖6-5所示。圖6-4HBase啟動(dòng)前master進(jìn)程圖6-5HBase啟動(dòng)前slave1進(jìn)程啟動(dòng)HBase集群接下來在master節(jié)點(diǎn)啟動(dòng)HBase,如代碼6-9所示,并查看Java進(jìn)程。代碼6-9啟動(dòng)hbase代碼start-hbase.sh啟動(dòng)后過程提示如圖6-6所示,能看到分別在三個(gè)節(jié)點(diǎn)啟動(dòng)了HBase。圖6-6HBase啟動(dòng)過程啟動(dòng)HBase集群現(xiàn)在用jps分別在查看master和slave1的Java進(jìn)程情況,如圖6-7、圖6-8所示,發(fā)現(xiàn)master節(jié)點(diǎn)多了一個(gè)HMaster進(jìn)程;slave1節(jié)點(diǎn)中多了HRegionServer進(jìn)程(slave2類似)。圖6-7HBase啟動(dòng)后master進(jìn)程圖6-8HBase啟動(dòng)后slave1進(jìn)程啟動(dòng)HBase集群也可以瀏覽器中輸入81:60010/,出現(xiàn)HBase的WebUI界面效果,如圖

6-9所示。如果要關(guān)閉HBase,可以在master節(jié)點(diǎn)執(zhí)行stop-hbase.sh命令關(guān)閉。至此,HBase的安裝與配置成功完成。圖6-9HBase啟動(dòng)后WebUI效果謝謝HBaseShell基本操作主講:李強(qiáng)任務(wù)描述本任務(wù)主要完成基于Linux環(huán)境,在Hadoop集群掌握HBaseShell命令的使用的工作。通過完成本實(shí)驗(yàn)任務(wù),要求學(xué)生熟練掌握HBaseShell命令的使用的方法,為后續(xù)實(shí)驗(yàn)的開展奠定HBase平臺(tái)基礎(chǔ)。任務(wù)分析HBase是一個(gè)面向列的分布式數(shù)據(jù)庫。HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫。另一個(gè)不同的是HBase基于列的而不是基于行的模式。所以HBase的Shell操作在過程上與Hive類似,但是具體的語法卻有較大的區(qū)別。在本任務(wù)中,主要在HBaseShell中,體驗(yàn)下面向列的模式進(jìn)行數(shù)據(jù)表的管理和數(shù)據(jù)的管理基本操作。6.2.1HBaseShell應(yīng)用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論