基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩51頁(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ù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

目錄

1項(xiàng)目背景1

1.1項(xiàng)目的背景1

1.2項(xiàng)目的意義1

2大數(shù)據(jù)平臺(tái)框架介紹1

2.1Hadoop框架2

2.1.1HDFS存儲(chǔ)技術(shù)2

2.1.2MapReduce編程框架2

2.1.3Yarn資源調(diào)度器2

2.2Hive框架2

2.3Sqoop框架3

2.4Zookeeper框架3

2.5Hbase框架3

3系統(tǒng)框架設(shè)計(jì)3

3.1框架版本選型3

3.2系統(tǒng)技術(shù)架構(gòu)4

3.3Hadoop分布式集群的網(wǎng)絡(luò)和節(jié)點(diǎn)規(guī)劃5

3.4Zookeeper集群部署規(guī)劃5

3.5Hbase集群規(guī)劃5

3.6離線數(shù)倉(cāng)設(shè)計(jì)6

3.6.1數(shù)據(jù)倉(cāng)庫(kù)介紹6

3.6.2數(shù)據(jù)倉(cāng)庫(kù)分層6

3.6.3數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)6

3.7Web客戶端設(shè)計(jì)9

4系統(tǒng)實(shí)現(xiàn)9

4.1Hadoop大數(shù)據(jù)集群部署9

4.1.1JDK配置9

4.1.2搭建Hadoop集群完全分布式10

4.1.3Hive安裝配置18

4.1.4Zookeeper完全分布式集群搭建22

I

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4.1.5Hbase完全分布式24

4.1.6Sqoop安裝配置26

4.2離線數(shù)倉(cāng)的實(shí)現(xiàn)27

4.2.1Hive集成hbase27

4.2.2創(chuàng)建普通表29

4.2.3創(chuàng)建以省分區(qū)表30

4.2.4創(chuàng)建索引提高查詢效率30

4.3Web客戶端實(shí)現(xiàn)30

4.3.1開(kāi)發(fā)環(huán)境準(zhǔn)備30

4.3.2創(chuàng)建查詢界面32

4.3.3創(chuàng)建查詢處理后臺(tái)34

4.3.4封裝一個(gè)字段類,用于存儲(chǔ)獲取到的字段,并于后面調(diào)用

35

4.3.5創(chuàng)建查詢類,連接hive并查詢獲取數(shù)據(jù)38

4.3.6創(chuàng)建列表界面42

5測(cè)試44

5.1啟動(dòng)Hadoop集群44

5.1.1驗(yàn)證(查看是否啟動(dòng)成功)44

5.1.2Web端訪問(wèn)45

5.2Zookeeper集群?jiǎn)?dòng)45

5.3啟動(dòng)Hbase集群45

5.4啟動(dòng)hive46

5.5數(shù)據(jù)傳輸46

5.6Hive分析疫情數(shù)據(jù)48

5.7Web客戶端連接Hive51

6小結(jié)54

II

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計(jì)

1項(xiàng)目背景

1.1項(xiàng)目的背景

數(shù)據(jù)信息時(shí)代的到來(lái)為大數(shù)據(jù)技術(shù)的發(fā)展提供了極好的時(shí)機(jī)。技術(shù)的快速

發(fā)展也促進(jìn)了互聯(lián)網(wǎng)產(chǎn)業(yè)的繁榮與壯大。互聯(lián)網(wǎng)企業(yè)要想生存下去,就必須利

用好技術(shù)跟上時(shí)代的腳步。隨著大數(shù)據(jù)的出現(xiàn),數(shù)據(jù)的變化越來(lái)越快、數(shù)據(jù)的

規(guī)模越來(lái)越大,采用大數(shù)據(jù)框架勢(shì)在必行。

1.2項(xiàng)目的意義

2020年至2022年是新冠疫情最為煎熬的三年,在這三年里無(wú)數(shù)人失去了

生命,無(wú)數(shù)人為抗擊疫情前赴后繼,而在此期間產(chǎn)生了大量的疫情數(shù)據(jù),我們

可以通過(guò)對(duì)這些數(shù)據(jù)的查詢分析,更為直觀的見(jiàn)證這場(chǎng)戰(zhàn)爭(zhēng)的慘烈與它的蔓延

趨勢(shì)。

2大數(shù)據(jù)平臺(tái)框架介紹

大數(shù)據(jù)生態(tài):

圖2-1大數(shù)據(jù)生態(tài)圖

1

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

2.1Hadoop框架

2.1.1HDFS存儲(chǔ)技術(shù)

隨著數(shù)據(jù)量的增加,海量的數(shù)據(jù)無(wú)法保存在單個(gè)獨(dú)立的操作系統(tǒng)。此時(shí)就

將數(shù)據(jù)分配給其他系統(tǒng)的磁盤(pán)中,但面對(duì)的主要問(wèn)題就是維護(hù)和管理。HDFS

(Hadoop分布式文件系統(tǒng))即通過(guò)目錄樹(shù)確定文件的用于存儲(chǔ)文件的文件系

統(tǒng),它具有高吞吐量率(HighThroughputRate)、高容錯(cuò)

(HighFaultTolerance)、高擴(kuò)展性(HighScalability)、高可靠性

(HighReliability)等特點(diǎn)。其存儲(chǔ)方式為大容量數(shù)據(jù)提供了高容災(zāi)性,給大規(guī)

模數(shù)據(jù)集(LargeDataSet)的應(yīng)用處理帶來(lái)了很多方便。

2.1.2MapReduce編程框架

MapReduce一個(gè)采用Java開(kāi)發(fā)的分布式離線計(jì)算編程架構(gòu)。其核心作用

是將用戶自定義編寫(xiě)的Map與Reduce兩個(gè)階段邏輯層面的代碼與其框架默認(rèn)

組件整合到一個(gè)分布式離線計(jì)算的程序中,并在Hadoop集群上運(yùn)行。其中,

Map階段主要負(fù)責(zé)將獲取的數(shù)據(jù)進(jìn)行拆分,Reduce階段負(fù)責(zé)聚合處理來(lái)自

map端的結(jié)果。

2.1.3Yarn資源調(diào)度器

Yarn屬于整個(gè)框架中最重要的部分,資源調(diào)度管理平臺(tái)

(ResourceSchedulingManager)主要為應(yīng)用程序提供所需的資源和資源的管

理。在整個(gè)框架中,Yarn相當(dāng)于一個(gè)分布式操作系統(tǒng)平臺(tái),而MapReduce等

運(yùn)算程序則相當(dāng)于在操作系統(tǒng)上方運(yùn)行的應(yīng)用程序。

2.2Hive框架

Hive是Facebook的開(kāi)源軟件用來(lái)解決大量結(jié)構(gòu)化日志的數(shù)據(jù)統(tǒng)計(jì)工具,

其是基于Hadoop的離線數(shù)倉(cāng)開(kāi)發(fā)框架。它可以將有規(guī)律的、符合二維表格存

儲(chǔ)的數(shù)據(jù)文件映射為二維表,并提供支持類SQL語(yǔ)法進(jìn)行數(shù)據(jù)查找。其本質(zhì)是

將底層的MapReduce程序轉(zhuǎn)換映射為HQL從而便于查詢,而數(shù)據(jù)則通過(guò)

YARN存儲(chǔ)在HDFS上以執(zhí)行程序運(yùn)行。

2

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

2.3Sqoop框架

Sqoop是一款各數(shù)據(jù)庫(kù)之間導(dǎo)入導(dǎo)出的傳輸工具。主要用于在數(shù)據(jù)倉(cāng)庫(kù)與

傳統(tǒng)的數(shù)據(jù)庫(kù)間進(jìn)行數(shù)據(jù)的傳遞,既可以將存儲(chǔ)在HDFS中的Hive表數(shù)據(jù)傳輸

到MySQL關(guān)系型數(shù)據(jù)庫(kù)中,同時(shí)也支持相互傳輸。其原理是將導(dǎo)入或?qū)С雒?/p>

轉(zhuǎn)換為MapReduce程序,從而具有較高的并行性能和良好的容錯(cuò)能力。

2.4Zookeeper框架

為分布式應(yīng)用提供協(xié)調(diào)服務(wù),也是一個(gè)分布式小文件系統(tǒng),并且被設(shè)計(jì)為

高可用性,主要作用于分布式數(shù)據(jù)管理:命名一致,狀態(tài)一致,集群管控,配置

一致等。

Hadoop的不少組件都需要用到Zookeeper,運(yùn)行于集群上管控hadoop操

作。

2.5Hbase框架

HBase是一個(gè)創(chuàng)建在hdfs上的NoSql數(shù)據(jù)庫(kù),它的行列式結(jié)構(gòu)可快速存儲(chǔ)

和訪問(wèn)海量數(shù)據(jù)。

3系統(tǒng)框架設(shè)計(jì)

3.1框架版本選型

本系統(tǒng)采用開(kāi)源軟件Apache框架且是當(dāng)前大數(shù)據(jù)行業(yè)中較為成熟、穩(wěn)定

的版本。能夠提高開(kāi)發(fā)效率、降低開(kāi)發(fā)成本,便于初學(xué)者解決框架中遇到的問(wèn)

題。版本選型如表3-1所示。

表3-1框架版本選擇

框架(Apache)版本

Hadoop2.7.3

Hive2.3.4

Sqoop1.4.6

Zookeeper3.7.0

Hbase1.4.0

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

3.2系統(tǒng)技術(shù)架構(gòu)

離線數(shù)倉(cāng)系統(tǒng)如圖3-1所示,主要由數(shù)據(jù)獲取、數(shù)據(jù)傳輸、數(shù)據(jù)倉(cāng)庫(kù)、

web前端四大功能模塊組成。

1)數(shù)據(jù)獲取:

數(shù)據(jù)源從國(guó)家疫情網(wǎng)站獲取2020年1月23日至2022年12月17日的疫

情數(shù)據(jù)以天為單位存儲(chǔ)為csv文件。

2)數(shù)據(jù)傳輸:

通過(guò)SecureFX將數(shù)據(jù)傳輸入Linux本地,或者將csv文件導(dǎo)入mysql,再

通過(guò)Sqoop框架遷移至HDFS。

3)數(shù)據(jù)倉(cāng)庫(kù):

Hive可以直接創(chuàng)建數(shù)據(jù)庫(kù)與數(shù)據(jù)表用于加載本地?cái)?shù)據(jù),并進(jìn)行查詢與分

析,為使對(duì)巨量數(shù)據(jù)擁有更為穩(wěn)定的查詢速度,我們可以將hive與hbase集

成,創(chuàng)建hive與hbase的關(guān)聯(lián)表,該表的對(duì)外接口為hive但數(shù)據(jù)源卻位于

hbase,它同時(shí)具有hive的類SQL語(yǔ)句,hbase所不具備的復(fù)雜數(shù)據(jù)分析能

力,hbase對(duì)海量數(shù)據(jù)更為強(qiáng)大的讀寫(xiě)能力。

Hive與HBase集成后可以看作是低延時(shí)的數(shù)據(jù)倉(cāng)庫(kù)??梢岳肏Base的快

速讀寫(xiě)能力完成數(shù)據(jù)實(shí)時(shí)查詢,也可以使用Hive查詢HBase中的數(shù)據(jù)以完成復(fù)

雜的數(shù)據(jù)分析。

4)建立javaWeb項(xiàng)目:

創(chuàng)建查詢客戶端,通過(guò)用戶輸入的查詢選項(xiàng)傳入對(duì)應(yīng)的sql語(yǔ)句,該sql語(yǔ)

句由hive處理將ETL操作加載至hbase,hbase再?gòu)膆dfs查詢數(shù)據(jù),再將結(jié)果

反饋回前端呈現(xiàn)為表格數(shù)據(jù)。

圖3-1系統(tǒng)架構(gòu)圖

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

3.3Hadoop分布式集群的網(wǎng)絡(luò)和節(jié)點(diǎn)規(guī)劃

i網(wǎng)絡(luò)規(guī)劃

表3-2網(wǎng)絡(luò)規(guī)劃

主機(jī)名IP地址節(jié)點(diǎn)類型

bigdata6master

bigdata017slave1

bigdata028slave2

ii節(jié)點(diǎn)規(guī)劃

表3-3節(jié)點(diǎn)規(guī)劃

服務(wù)bigdatabigdate01bigdata02

NameNode√

SecondaryNameNode√

DataNode√√√

ResourceManager√

NodeManager√√√

JobHistoryServer√

3.4Zookeeper集群部署規(guī)劃

表3-4zookeeper規(guī)劃

bigdatabigdata01bigdata02

zookeeperzookeeperzookeeper

3.5Hbase集群規(guī)劃

表3-5hbase規(guī)劃

主機(jī)名IP地址職責(zé)

bigdata6HBase主節(jié)點(diǎn)

bigdata017HBase備用節(jié)點(diǎn)

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

3.6離線數(shù)倉(cāng)設(shè)計(jì)

3.6.1數(shù)據(jù)倉(cāng)庫(kù)介紹

數(shù)據(jù)倉(cāng)庫(kù)(DataWarehouse)是為企業(yè)的所有決策提供系統(tǒng)數(shù)據(jù)支持的重要集

合。數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)集成的(Integrated)、穩(wěn)定的(Stable)、面向主題的

(Subject-Oriented),能夠根據(jù)時(shí)刻改變的數(shù)據(jù)集合。它有以下特性:面向主

題:數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)基于一個(gè)明確的主題,只存儲(chǔ)與主題相關(guān)的數(shù)據(jù),并排

除其他不相關(guān)的數(shù)據(jù)。集成的:從不同的數(shù)據(jù)源采集數(shù)據(jù)到同一個(gè)數(shù)據(jù)源。穩(wěn)

定的:長(zhǎng)期的歷史數(shù)據(jù)的內(nèi)容能夠穩(wěn)定的存放在數(shù)據(jù)倉(cāng)庫(kù)中并不會(huì)輕易變化,

數(shù)據(jù)存入數(shù)倉(cāng)后一般之進(jìn)行查詢操作,并且沒(méi)有頻繁的刪改操作。隨時(shí)間變

化:某些關(guān)鍵的數(shù)據(jù)需要基于時(shí)間的變化才能為企業(yè)提供決策。

3.6.2數(shù)據(jù)倉(cāng)庫(kù)分層

本系統(tǒng)將數(shù)據(jù)倉(cāng)庫(kù)分為ODS、DWD、DWS、DWT、ADS五層。如圖4-1

所示。

1)以便把復(fù)雜問(wèn)題簡(jiǎn)單化,方便定位問(wèn)題。

2)減少重復(fù)開(kāi)發(fā)。

3)隔離原始數(shù)據(jù)。

各層的作用如下:

1)ODS層:原始數(shù)據(jù)層,負(fù)責(zé)存放原始數(shù)據(jù),直接將數(shù)據(jù)存儲(chǔ),原封不動(dòng)

即可。

2)DWD層:明細(xì)數(shù)據(jù)層,清理、脫敏ODS層數(shù)據(jù),保存詳細(xì)數(shù)據(jù),與原

始數(shù)據(jù)層的粒度與結(jié)構(gòu)相似。

3)DWM層:數(shù)據(jù)中間層,對(duì)數(shù)據(jù)做一些輕微的聚合操作。

4)DWS層:服務(wù)數(shù)據(jù)層,基于DWD的數(shù)據(jù)分表。

5)ADS層:數(shù)據(jù)應(yīng)用層,為各種統(tǒng)計(jì)報(bào)表提供數(shù)據(jù)。

3.6.3數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)

i數(shù)據(jù)倉(cāng)庫(kù)-ODS

原始數(shù)據(jù)層(ODS)是數(shù)據(jù)倉(cāng)庫(kù)中保存數(shù)據(jù)起備份數(shù)據(jù)的部分,為的是優(yōu)

化下層數(shù)據(jù)處理的難易程度。ODS層的數(shù)據(jù)粒度是最小的粒度。如各省份每個(gè)

城市的基礎(chǔ)數(shù)據(jù)表共361張。

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

搭建ODS層表時(shí)由于數(shù)據(jù)龐大且重要,所有建表需要考慮以下條件:

1)數(shù)據(jù)采用壓縮,減少存儲(chǔ)空間。通常采用LZO進(jìn)行壓縮因其壓縮/解壓

速度較快且支持切片。

2)保存數(shù)據(jù)原貌不做任何修改,起備份作用。

ii數(shù)據(jù)倉(cāng)庫(kù)-DWD層

明細(xì)數(shù)據(jù)層(DWD)

該層保持和ODS層一樣的數(shù)據(jù)顆粒度;主要是對(duì)ODS數(shù)據(jù)層做一些數(shù)據(jù)

的清洗和規(guī)范化的操作,比如去除空數(shù)據(jù)、臟數(shù)據(jù)、離群值等。

為了提高數(shù)據(jù)明細(xì)層的易用性,該層通常會(huì)才采用一些維度退化方法,將

維度退化至事實(shí)表中,減少事實(shí)表和維表的關(guān)聯(lián)。

例如:去除疫情數(shù)據(jù)中新增確診、新增治愈、新增死亡,這些容易導(dǎo)致數(shù)

據(jù)失真的記錄,形成一張更加高質(zhì)量的表。

iii數(shù)據(jù)倉(cāng)庫(kù)-DWM層

該層是在DWD層的數(shù)據(jù)基礎(chǔ)上,對(duì)數(shù)據(jù)做一些輕微的聚合操作,生成一

些列的中間結(jié)果表,提升公共指標(biāo)的復(fù)用性,減少重復(fù)加工的工作。

1)創(chuàng)建分區(qū)表,防止對(duì)海量數(shù)據(jù)進(jìn)行全表掃描。

2)創(chuàng)建外部表,提供數(shù)據(jù)的安全性與可靠性,防止誤刪等操作。

3)融合類型一致、字段一致的表。

例如,因?yàn)樗惺》莞鞒鞘械囊咔閿?shù)據(jù)表字段都一致,可將它們反復(fù)加載

進(jìn)一張表中,最終字段表3-6所示:

表3-6普通表

字段名數(shù)據(jù)類型是否為主鍵是否可為空含義

shengfenstring否否省份

citystring否否城市

yiqingdatedate否否日期

leiji_quezhenint否否累計(jì)確診

xinzeng_quezhenint否否新增確診

leiji_zhiyuint否否累計(jì)治愈

xinzeng_zhiyuint否否新增治愈

leiji_siwangint否否累計(jì)死亡

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

xinzeng_siwangint否否新增死亡

xinzeng_wuzhenzhuangint否否新增無(wú)癥狀

xinzeng_bentuquezhenint否否新增本土確診

iv數(shù)據(jù)倉(cāng)庫(kù)-DWS層

該層是基于DWM上的基礎(chǔ)數(shù)據(jù),整合匯總成分析某一個(gè)主題域的數(shù)據(jù)服

務(wù)層,一般是寬表,用于提供后續(xù)的數(shù)據(jù)查詢,OLAP分析,數(shù)據(jù)分發(fā)等。

一般來(lái)說(shuō),該層的數(shù)據(jù)表會(huì)相對(duì)較少;一張表會(huì)涵蓋比較多的需求數(shù)據(jù),

由于其字段較多,因此一般也會(huì)稱該層的表為寬表。

例如:獲取2020年每月確診人數(shù)大于50的城市,將這些數(shù)據(jù)整合成月度

高風(fēng)險(xiǎn)城市表。

v數(shù)據(jù)倉(cāng)庫(kù)-ADS

數(shù)據(jù)應(yīng)用層(ADS)作為數(shù)據(jù)倉(cāng)庫(kù)的最后一層,存儲(chǔ)數(shù)據(jù)的粒度最高,該

層主要是提供給數(shù)據(jù)產(chǎn)品和數(shù)據(jù)分析使用的數(shù)據(jù),一般會(huì)存放在ES、Redis、

PostgreSql等系統(tǒng)中供線上系統(tǒng)使用;也可能存放在hive或者Druid中,供數(shù)

據(jù)分析和數(shù)據(jù)挖掘使用,比如常用的數(shù)據(jù)報(bào)表就是存在這里的。

本系統(tǒng)的該層將所有城市表,省份表通過(guò)hive融合在一起并集成hbase作

為外部客戶端的對(duì)接查詢表,具體字段如下:

表3-7hive、hbase關(guān)聯(lián)表

字段名數(shù)據(jù)類型是否為行鍵是否可為空含義

idint行鍵否序號(hào)

shengfenstring否否省份

citystring否否城市

yiqingdatedate否否日期

leiji_quezhenint否否累計(jì)確診

xinzeng_quezhenint否否新增確診

leiji_zhiyuint否否累計(jì)治愈

xinzeng_zhiyuint否否新增治愈

leiji_siwangint否否累計(jì)死亡

xinzeng_siwangint否否新增死亡

xinzeng_wuzhenzhuangint否否新增無(wú)癥狀

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

xinzeng_bentuquezhenint否否新增本土確診

3.7Web客戶端設(shè)計(jì)

客戶端具體設(shè)計(jì)思路:

1)創(chuàng)建查詢界面,獲取用戶輸入數(shù)據(jù)。

2)創(chuàng)建查詢處理后臺(tái),將用戶輸入數(shù)據(jù)轉(zhuǎn)為參數(shù),為查詢類調(diào)用。

3)創(chuàng)建查詢類、封裝類,查詢類與hive連接發(fā)送sql語(yǔ)句,封裝類暫存數(shù)

據(jù)。

4)創(chuàng)建列表界面,將用戶需求數(shù)據(jù)以列表形式進(jìn)行呈現(xiàn)。

設(shè)計(jì)流程如圖3-2:

圖3-2設(shè)計(jì)流程圖

4系統(tǒng)實(shí)現(xiàn)

4.1Hadoop大數(shù)據(jù)集群部署

4.1.1JDK配置

1)將jdk-8u131-linux-x64.tar.gz,通過(guò)SecureFX傳到Linux虛擬主機(jī)

2)解壓安裝jdk:

tar–zxvfjdk-8u131-linux-x64.tar.gz

mvjdk1.8.0_131/usr/local/bigdata/

如果系統(tǒng)默認(rèn)安裝了openjdk,使用whichjava查找Java安裝目錄,然

后卸載:rm–rf/bin/java(Java安裝目錄)

3)編輯~/.bashrc配置,把JDK加入系統(tǒng)環(huán)境變量

vi~/.bashrc

打開(kāi)文件后,在文件末尾追加如下代碼:

exportJAVA_HOME=/usr/local/bigdata/jdk1.8.0_131

exportJRE_HOME=${JAVA_HOME}/jre

exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH

9

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

exportJAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

exportPATH=$PATH:${JAVA_PATH}

按ESC,輸入:wq保存退出

4)讓~/.bashrc生效

source~/.bashrc

5)確認(rèn)JDK安裝成功

java–version

4.1.2搭建Hadoop集群完全分布式

i網(wǎng)絡(luò)配置、修改主機(jī)名、配置網(wǎng)絡(luò)映射

1)修改網(wǎng)絡(luò)配置文件

三臺(tái)都要修改

vi/etc/sysconfig/network-scripts/ifcfg-ens33

圖4-1網(wǎng)絡(luò)配置

2)主機(jī)名配置

直接刪除以前的,添加當(dāng)前節(jié)點(diǎn)主機(jī)名(三臺(tái)都要修改)

vi/etc/hostname

3)配置網(wǎng)絡(luò)映射

vi/etc/hosts

在文件最后添加ip地址主機(jī)名(每一臺(tái)虛擬機(jī)上都要配置,如下三行都要

添加)

6bigdata

10

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

7bigdata01

8bigdata02

4)重啟網(wǎng)絡(luò)服務(wù):

servicenetworkrestart

ii設(shè)置SSH無(wú)密碼登錄節(jié)點(diǎn)

1)執(zhí)行命令在本機(jī)生成公鑰、私鑰和驗(yàn)證文件

ssh-keygen-trsa

2)執(zhí)行命令將登錄信息復(fù)制到驗(yàn)證文件

ssh-copy-idbigdata#bigdata為主機(jī)名

ssh-copy-idbigdata01#bigdata01為主機(jī)名

ssh-copy-idbigdata02#bigdata02為主機(jī)名

iii安裝Hadoop

1)解壓

解壓hadoop-2.7.3.tar.gz,重命名為hadoop

tar-zxvfhadoop-2.7.3.tar.gz

mkdir/usr/local/bigdata

mvhadoop-2.7.3hadoop

mvhadoop/usr/local/bigdata/hadoop

(配置文件時(shí)均在hadoop的主目錄下操作)

進(jìn)入Hadoop主目錄:cd/usr/local/bigdata/hadoop

2)配置Hadoop的環(huán)境變量

設(shè)置HADOOP環(huán)境變量,執(zhí)行如下命令在~/.bashrc中修改:

vim~/.bashrc

在文件最后面增加如下內(nèi)容:

exportHADOOP_HOME=/usr/local/bigdata/Hadoop

exportHADOOP_INSTALL=$HADOOP_HOME

exportHADOOP_MAPRED_HOME=$HADOOP_HOME

exportHADOOP_COMMON_HOME=$HADOOP_HOME

exportHADOOP_HDFS_HOME=$HADOOP_HOME

exportYARN_HOME=$HADOOP_HOME

11

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

exportPATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

保存后,執(zhí)行如下命令使配置生效:

source~/.bashrc

iv配置分布式集群環(huán)境(6個(gè)配置文件)

對(duì)于Hadoop分布式集群模式的搭建,需要配置的文件有:

環(huán)境變量配置文件:hadoop-env.sh、yarn-env.sh、mapred-env.sh

全局核心配置文件:core-site.xml

HDFS配置文件:hdfs-site.xml

YARN配置文件:yarn-site.xml

MapReduce配置文件:mapred-site.xml、slaves

1、修改/etc/hadoop/hadoop-env.sh

定位25行,配置自己的jdk路徑。

2、修改/etc/hadoop/core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://bigdata:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/bigdata/hadoop/data/tmp</value>

</property>

</configuration>

3、修改/etc/hadoop/hdfs-site.xml

<configuration>

<!--配置NameNode的http訪問(wèn)地址和端口號(hào)-->

<property>

<name>node.http-address</name>

<value>bigdata:50070</value>

</property>

<!--配置SecondaryNameNode的http訪問(wèn)地址和端口號(hào)-->

12

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

<property>

<name>node.secondary.http-address</name>

<value>bigdata01:50090</value>

</property>

<!--hdfs副本數(shù)量-->

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<!--配置存放NameNode的目錄-->

<name>.dir</name>

<value>file:/usr/local/bigdata/hadoop/tmp/dfs/name</value>

</property>

<property>

<!--配置存放DataNode存放的目錄-->

<name>dfs.datanode.data.dir</name>

<value>file:/usr/local/bigdata/hadoop/tmp/dfs/data</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

4、修改/etc/hadoop/yarn-site.xml

<configuration>

<property>

<!--指定ResourceManager運(yùn)行于哪個(gè)節(jié)點(diǎn)上-->

<name>yarn.resourcemanager.hostsname</name>

<value>bigdata</value>

</property>

<property>

<!--指定ResourceManager服務(wù)器的web地址與端口-->

13

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

<name>yarn.resourcemanager.webapp.address</name>

<value>bigdata:8088</value>

</property>

<property>

<!--指定NodeManager啟動(dòng)時(shí)加載的server方式-->

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<!--指定使用的mapreduce_shuffle中的類-->

<name>yarn.nodemanager.aux-

services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<!--設(shè)置是否使用日志聚合功能-->

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<!--設(shè)置聚合日志于HDFS上最長(zhǎng)儲(chǔ)存時(shí)間-->

<name>yarn.log-aggregation.retain-seconds</name>

<value>106800</value>

</property>

<property>

<!--指定日志的聚合目錄-->

<name>yarn.nodemanager.remote-app-log-dir</name>

<value>/root/data/logs</value>

</property>

</configuration>

5、修改/etc/hadoop/mapred-site.xml

用已有mapred-site.xml.template復(fù)制出一個(gè)mapred-site.xml。

復(fù)制命令:

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

cp/usr/local/bigdata/hadoop/etc/hadoop/mapred-site.xml.template

/usr/local/bigdata/hadoop/etc/hadoop/mapred-site.xml

文件里配置:

<configuration>

<property>

<!--指定MapReduce框架運(yùn)行于YARN上面-->

<name></name>

<value>yarn</value>

</property>

<property>

<!--設(shè)置MapReduce歷史服務(wù)器安裝的位置與其端口號(hào)-->

<name>mapreduce.jobhistory.address</name>

<value>bigdata02:10020</value>

</property>

<property>

<!--設(shè)置歷史服務(wù)器web頁(yè)面地址與端口-->

<name>mapreduce.jobhistory.webapp.address</name>

<value>bigdata02:19888</value>

</property>

<property>

<!--設(shè)置存儲(chǔ)日志文件的臨時(shí)路徑-->

<name>ermediate-done-dir</name>

<value>${hadoop.tmp.dir}/mr-history/tmp</value>

</property>

<property>

<!--設(shè)置存儲(chǔ)運(yùn)行日志的最終目錄-->

<name>mapreduce.jobhistory.done-dir</name>

<value>${hadoop.tmp.dir}/mr-history/done</value>

</property>

</configuration>

6、修改/etc/hadoop/slaves

添加所有節(jié)點(diǎn)主機(jī)名bigdata、bigdata01、bigdata02。

15

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

v分發(fā)Hadoop集群安裝目錄及文件

在主節(jié)點(diǎn)上安裝和配置好hadoop系統(tǒng),并且其他子節(jié)點(diǎn)完成ssh的安

裝、免密登錄等,就可以把在bigdata上配置好的Hadoop和linux環(huán)境配置文

件分派給其他節(jié)點(diǎn)。

拷貝主節(jié)點(diǎn)已安裝的hadoop分別到bigdata01和bigdata02兩臺(tái)節(jié)點(diǎn)

scp-r/usr/local/bigdata/hadooproot@bigdata01:/usr/local/bigdata/

scp-r/usr/local/bigdata/hadooproot@bigdata02:/usr/local/bigdata/

拷貝linux環(huán)境配置文件到分別到bigdata01和bigdata02兩臺(tái)節(jié)點(diǎn)

scp-r~/.bashrcroot@bigdata01:~/

scp-r~/.bashrcroot@bigdata02:~/

拷貝主節(jié)點(diǎn)的jdk到bigdata01和bigdata02兩臺(tái)節(jié)點(diǎn)

scp-r/usr/local/bigdata/jdk1.8.0_131

root@bigdata01:/usr/local/bigdata/

scp-r/usr/local/bigdata/jdk1.8.0_131

root@bigdata02:/usr/local/bigdata/

vi格式化NameNode

在啟動(dòng)hadoop集群前,需要先格式化NameNode,在Master主機(jī)下執(zhí)行

格式化命令:

hdfsnamenode-format

vii配置時(shí)間同步

Hadoop的主節(jié)點(diǎn)與各子節(jié)點(diǎn)的時(shí)間都得同步才行。下面通過(guò)配置時(shí)間同

步服務(wù)器(NTP)來(lái)進(jìn)行時(shí)間同步。

我們主要以bigdata作為NTP服務(wù)器,子節(jié)點(diǎn)bigdata01和bigdata02每

10分鐘與bigdata進(jìn)行同步一次。

1)安裝NTP服務(wù)器

查看是否安裝NTP服務(wù),如果出現(xiàn)ntp-x.x.x和ntpdate-x.x.x則不需要再安

rpm-qa|grepntp

安裝命令:

yuminstall-yntp#使用yum在線安裝

16

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

修改配置文件ntp.conf

vi/etc/ntp.conf

①啟用restrice,修改網(wǎng)段

刪除restrice前的注釋,修改為自己的網(wǎng)段

restrictmasknomodifynotrap

②注釋掉四行server域名,再添加兩行,如下所示:

#server0.iburst

#server1.iburst

#server2.iburst

#server3.iburst

server

fudgestratum10

③修改配置文件ntpd

vi/etc/sysconfig/ntpd

于第2行這里添加SYNC_HWCLOCK=yes

SYNC_HWCLOCK=yes

④啟動(dòng)NTP服務(wù)

servicentpdstart#啟動(dòng)NTP服務(wù)

chkconfigntpdon#開(kāi)機(jī)自啟動(dòng),永久啟動(dòng)

2)配置其他機(jī)器的時(shí)間同步

需要保證子節(jié)點(diǎn)里面也安裝了NTP,然后開(kāi)始配置子節(jié)點(diǎn)與主節(jié)點(diǎn)同步時(shí)

間。以下操作兩個(gè)子節(jié)點(diǎn)上配置(分別配置一遍):

①在ntp.conf文件注釋掉四行server域名配置,其后添加一行:server

bigdata

②修改配置文件ntpd,此操作和前面的NTP服務(wù)器中配置一樣

③啟動(dòng)時(shí)間同步

啟動(dòng)NTP服務(wù):

servicentpdstart&chkconfigntpdon

3)測(cè)試集群間的時(shí)間同步

通過(guò)命令查看集群簡(jiǎn)的時(shí)間是否同步

date'+%Y-%m-%d%H:%M:%S'

顯示格式為“年-月-日時(shí):分:秒”,若三臺(tái)時(shí)間都顯示的一樣,即時(shí)間同步

完成。后面再重啟虛擬機(jī)看看各節(jié)點(diǎn)有沒(méi)有時(shí)間同步。

17

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4.1.3Hive安裝配置

i軟件準(zhǔn)備

通過(guò)SecureFX傳至虛擬機(jī)

MySQL-client-5.5.30-1.linux2.6.x86_64.rpm

MySQL-server-5.5.30-1.linux2.6.x86_64.rpm

apache-hive-2.3.4-bin.tar.gz

mysql-connector-java-5.1.48.jar

iimysql安裝

安裝mysql

rpm–ivhMySQL-client-5.5.30-1.linux2.6.x86_64.rpm

mysql配置

1)啟動(dòng)mysql服務(wù):

servicemysqlstart

2)創(chuàng)建root用戶密碼:

用戶名root,密碼hive

/usr/bin/mysqladmin–urootpassword‘hive’

3)登錄mysql:

mysql–uroot–p

4)創(chuàng)建數(shù)據(jù)庫(kù)hive:

createdatabasehive

5)創(chuàng)建用戶及授權(quán):(給hive數(shù)據(jù)庫(kù)授權(quán))

createuser‘hive’@’%’identifiedby‘hive’;

grantallprivilegeson*.*to‘hive’@’%’withgrantoption;

6)授權(quán)生效:

flushprivileges;

7)設(shè)置mysql開(kāi)機(jī)自啟動(dòng)

chkconfigmysqldon

18

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

iiihive安裝

解壓:

tar–zxvfapache-hive-2.3.4-bin.tar.gz

重命名為hive:

mvapache-hive-2.3.4-binhive

mvhive/usr/local/bigdata/hive

cd/usr/local/bigdata/hive/conf

配置hive環(huán)境:

1)修改配置文件hive-env.sh:

將$hive/conf目錄下的hive-env.sh.template更名為hive-env.sh

cphive-env.sh.templatehive-env.sh

vihive-env.sh

設(shè)置HADOOP_HOME為HADOOP的安裝路徑:

exportHADOOP_HOME=/usr/local/bigdata/hadoop

配置HIVE_CONF_DIR為hive安裝目錄:

exportHIVE_CONF_DIR=/usr/local/bigdata/hive/conf

2)修改配置文件hive-site.xml:

把hive/conf路徑下的hive-default.xml.template復(fù)制兩份,一份更名為

hive-site.xml,一份更名為hive-default.xml

cphive-default.xml.templatehive-site.xml

vihive-site.xml

打開(kāi)hive-site.xml,添加:

若配置文件代碼太多用簡(jiǎn)版site文件替換

<property>

<name>hive.exec.scratchdir</name>

<value>/tmp/hive</value>

</property>

<!--默認(rèn)的存儲(chǔ)位置-->

<property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive/warehouse</value>

19

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

</property>

<property>

<name>hive.downloaded.resources.dir</name>

<value>/usr/local/bigdata/hive/downloaded</value>

</property>

<property>

<name>hive.exec.local.scratchdir</name>

<value>/usr/local/bigdata/hive/scratchdir</value>

</property>

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://6:3306/hive</value>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>hive</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>hive</value>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

</property>

<property>

<name>hive.cli.print.current.db</name>

<value>true</value>

</property>

hive為用戶名

hive為用戶密碼

3)配置perties:

cpperties.templateperties

20

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

viperties

hive.log.dir=/usr/local/bigdata/hive/log/${}

hive.exec.local.scratchdir和hive.downloaded.resources.dir為本地

目錄,需要手動(dòng)創(chuàng)建/usr/local/bigdata/hive/downloaded和

/usr/local/bigdata/hive/scatchdir,日志文件也需要手動(dòng)在本地創(chuàng)建

/usr/local/bigdata/hive/log

4)刪除$HADOOP_HOME/share/hadoop/yarn/lib目錄下的jline*.jar,將

$HIVE_HOME/lib/jline-2.12.jar復(fù)制到

$HADOOP_HOME/share/hadoop/yarn/lib目錄下

($HADOOP_HOME相當(dāng)于/usr/local/bigdata/Hadoop)

cd/usr/local/bigdata/hive/lib/

cpjline-2.12.jar

/usr/local/bigdata/hadoop/share/hadoop/yarn/lib/

5)將mysql-connector-java-5.1.48.jar復(fù)制到$HIVE_HOME/lib目錄下

(/usr/local/bigdata/hive/lib)

cd~

cpmysql-connector-java-5.1.48.jar/usr/local/bigdata/hive/lib/

6)配置環(huán)境變量

vi~/.bashrc

在末尾增加兩行:

exportHIVE_HOME=/usr/local/bigdata/hive

exportPATH=$PATH:$HIVE_HOME/bin

7)使環(huán)境變量生效:

source~/.bashrc

8)hive測(cè)試

啟動(dòng)hadoop:start-dfs.sh

start-yarn.sh

啟動(dòng)hive(hive安裝目錄下):

hi會(huì)出現(xiàn)提示mysql未初始化等錯(cuò)誤信息導(dǎo)致無(wú)法啟動(dòng),執(zhí)行:

bin/schematool–initSchema–dbTypemysql

完成后再啟動(dòng)hive:

bin/hive

21

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4.1.4Zookeeper完全分布式集群搭建

i安裝Zookeeper

通過(guò)SecureFX將apache-zookeeper-3.7.0-bin.tar.gz傳至虛擬機(jī)。

解壓

tar-zxvfapache-zookeeper-3.7.0-bin.tar.gz-C

/usr/local/bigdata/zk

配置zook.cfg文件

cd/usr/local/bigdata/zk/conf

mvzoo-sample.cfgzoo.cfg

修改zoo.cfg,添加如下配置:

dataDir=/usr/local/bigdata/zk/zkdata#修改數(shù)據(jù)存儲(chǔ)路徑配置

在最后添加加以下配置:

server.1=bigdata:2888:3888

server.2=bigdata01:2888:3888

server.3=bigdata02:2888:3888

配置服務(wù)器編號(hào)

cd/usr/local/bigdata/zk#進(jìn)入Zookeeper家目錄

mkdirzkdata#創(chuàng)建zkdata目錄

vimzkdata/myid#創(chuàng)建并編輯一個(gè)myid的文件

在myid文件中添加與server對(duì)應(yīng)的編號(hào)1,分別在bigdata01、bigdata02

上修改myid文件中內(nèi)容為2、3。

修改環(huán)境變量:

vim~/.bashrc

在后面添加:

exportZK_HOME=/usr/local/bigdata/zk

exportPATH=$ZK_HOME/bin:$PATH

完成后執(zhí)行:source~/.bashrc

配置文件分發(fā)

cd/usr/local/bigdata/

scp-rzkroot@bigdata01:/usr/local/bigdata/

scp-rzkroot@bigdata02:/usr/local/bigdata/

22

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

scp-r~/.bashrcroot@bigdata01:~/

scp-r~/.bashrcroot@bigdata02:~/

注意在其他節(jié)點(diǎn)執(zhí)行:source~/.bashrc

zookeeper群?jiǎn)⒛_本

cd/home/tan/#進(jìn)入用戶家目錄

mkdirbin#新建一個(gè)bin目錄

vim/bin/zk.sh#編寫(xiě)腳本

chmod+xzk.sh#賦予可執(zhí)行權(quán)限

zk.sh腳本代碼編寫(xiě)如下:

#!/bin/bash

case$1in

"start"){

foriinbigdatabigdata01bigdata02

do

echo"$i"

ssh$i"/usr/local/bigdata/zk/bin/zkServer.shstart"

done

};;

"stop"){

foriinbigdatabigdata01bigdata02

do

echo"$i"

ssh$i"/usr/local/bigdata/zk/bin/zkServer.shstop"

done

};;

"status"){

foriinbigdatabigdata01bigdata02

do

echo"$i"

ssh$i"/usr/local/bigdata/zk/bin/zkServer.shstatus"

done

};;

esac

23

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

下次運(yùn)行可直接在主節(jié)點(diǎn)輸入:/home/tan/bin/zk.shstart或zk.shstop或

zk.shstatus

4.1.5Hbase完全分布式

i安裝hbase

1)將hbase-1.4.0-bin.tar.gz,通過(guò)SecureFX傳至虛擬機(jī)

2)解壓

tar–zxvfhbase-1.4.0-bin.tar.gz

3)重命名為hbase

mvhbase-1.4.0-binhbase

mvhbase/usr/local/bigdata/hbase

4)添加全局環(huán)境變量

vim~/.bashrc

exportHBASE_HOME=/usr/local/bigdata/hbase

exportPATH=$HBASE_HOME/bin:$PATH

完成后執(zhí)行:source~/.bashrc

ii配置hbase集群

配置hbase集群,要修改4個(gè)文件,copy

溫馨提示

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