基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計_第1頁
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計_第2頁
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計_第3頁
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計_第4頁
基于hive的新冠疫情數(shù)據(jù)離線分析系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

目錄

1項(xiàng)目背景1

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

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

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

2.1Hadoop框架2

2.1.1HDFS存儲技術(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è)計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ù)倉設(shè)計6

3.6.1數(shù)據(jù)倉庫介紹6

3.6.2數(shù)據(jù)倉庫分層6

3.6.3數(shù)據(jù)倉庫設(shè)計6

3.7Web客戶端設(shè)計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è)計

4.1.5Hbase完全分布式24

4.1.6Sqoop安裝配置26

4.2離線數(shù)倉的實(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開發(fā)環(huán)境準(zhǔn)備30

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

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

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

35

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

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

5測試44

5.1啟動Hadoop集群44

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

5.1.2Web端訪問45

5.2Zookeeper集群啟動45

5.3啟動Hbase集群45

5.4啟動hive46

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

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

5.7Web客戶端連接Hive51

6小結(jié)54

II

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

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

1項(xiàng)目背景

1.1項(xiàng)目的背景

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

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

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

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

1.2項(xiàng)目的意義

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

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

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

趨勢。

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

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

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

1

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

2.1Hadoop框架

2.1.1HDFS存儲技術(shù)

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

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

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

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

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

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

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

2.1.2MapReduce編程框架

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

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

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

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

map端的結(jié)果。

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

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

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

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

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

2.2Hive框架

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

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

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

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

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

2

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

2.3Sqoop框架

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

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

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

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

2.4Zookeeper框架

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

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

一致等。

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

作。

2.5Hbase框架

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

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

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

3.1框架版本選型

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

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

題。版本選型如表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è)計

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

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

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

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

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

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

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

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

通過Sqoop框架遷移至HDFS。

3)數(shù)據(jù)倉庫:

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

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

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

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

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

Hive與HBase集成后可以看作是低延時的數(shù)據(jù)倉庫。可以利用HBase的快

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

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

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

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

句由hive處理將ETL操作加載至hbase,hbase再從hdfs查詢數(shù)據(jù),再將結(jié)果

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

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

4

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

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è)計

3.6離線數(shù)倉設(shè)計

3.6.1數(shù)據(jù)倉庫介紹

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

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

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

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

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

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

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

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

3.6.2數(shù)據(jù)倉庫分層

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

所示。

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

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

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

各層的作用如下:

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

即可。

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

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

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

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

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

3.6.3數(shù)據(jù)倉庫設(shè)計

i數(shù)據(jù)倉庫-ODS

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

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

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

6

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

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

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

速度較快且支持切片。

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

ii數(shù)據(jù)倉庫-DWD層

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

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

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

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

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

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

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

iii數(shù)據(jù)倉庫-DWM層

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

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

1)創(chuàng)建分區(qū)表,防止對海量數(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否否累計確診

xinzeng_quezhenint否否新增確診

leiji_zhiyuint否否累計治愈

xinzeng_zhiyuint否否新增治愈

leiji_siwangint否否累計死亡

7

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

xinzeng_siwangint否否新增死亡

xinzeng_wuzhenzhuangint否否新增無癥狀

xinzeng_bentuquezhenint否否新增本土確診

iv數(shù)據(jù)倉庫-DWS層

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

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

一般來說,該層的數(shù)據(jù)表會相對較少;一張表會涵蓋比較多的需求數(shù)據(jù),

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

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

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

v數(shù)據(jù)倉庫-ADS

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

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

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

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

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

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

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

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

idint行鍵否序號

shengfenstring否否省份

citystring否否城市

yiqingdatedate否否日期

leiji_quezhenint否否累計確診

xinzeng_quezhenint否否新增確診

leiji_zhiyuint否否累計治愈

xinzeng_zhiyuint否否新增治愈

leiji_siwangint否否累計死亡

xinzeng_siwangint否否新增死亡

xinzeng_wuzhenzhuangint否否新增無癥狀

8

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

xinzeng_bentuquezhenint否否新增本土確診

3.7Web客戶端設(shè)計

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

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

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

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

據(jù)。

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

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

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

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

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

4.1.1JDK配置

1)將jdk-8u131-linux-x64.tar.gz,通過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

打開文件后,在文件末尾追加如下代碼:

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è)計

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ò)配置文件

三臺都要修改

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

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

2)主機(jī)名配置

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

vi/etc/hostname

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

vi/etc/hosts

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

添加)

6bigdata

10

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

7bigdata01

8bigdata02

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

servicenetworkrestart

ii設(shè)置SSH無密碼登錄節(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

(配置文件時均在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è)計

exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

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

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

source~/.bashrc

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

對于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訪問地址和端口號-->

<property>

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

<value>bigdata:50070</value>

</property>

<!--配置SecondaryNameNode的http訪問地址和端口號-->

12

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

<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)行于哪個節(jié)點(diǎn)上-->

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

<value>bigdata</value>

</property>

<property>

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

13

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

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

<value>bigdata:8088</value>

</property>

<property>

<!--指定NodeManager啟動時加載的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上最長儲存時間-->

<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ù)制出一個mapred-site.xml。

復(fù)制命令:

14

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

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ù)器安裝的位置與其端口號-->

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

<value>bigdata02:10020</value>

</property>

<property>

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

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

<value>bigdata02:19888</value>

</property>

<property>

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

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

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

</property>

<property>

<!--設(shè)置存儲運(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è)計

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兩臺節(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兩臺節(jié)點(diǎn)

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

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

拷貝主節(jié)點(diǎn)的jdk到bigdata01和bigdata02兩臺節(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

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

格式化命令:

hdfsnamenode-format

vii配置時間同步

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

步服務(wù)器(NTP)來進(jìn)行時間同步。

我們主要以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è)計

修改配置文件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

④啟動NTP服務(wù)

servicentpdstart#啟動NTP服務(wù)

chkconfigntpdon#開機(jī)自啟動,永久啟動

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

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

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

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

bigdata

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

③啟動時間同步

啟動NTP服務(wù):

servicentpdstart&chkconfigntpdon

3)測試集群間的時間同步

通過命令查看集群簡的時間是否同步

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

顯示格式為“年-月-日時:分:秒”,若三臺時間都顯示的一樣,即時間同步

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

17

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

4.1.3Hive安裝配置

i軟件準(zhǔn)備

通過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)啟動mysql服務(wù):

servicemysqlstart

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

用戶名root,密碼hive

/usr/bin/mysqladmin–urootpassword‘hive’

3)登錄mysql:

mysql–uroot–p

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

createdatabasehive

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

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

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

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

flushprivileges;

7)設(shè)置mysql開機(jī)自啟動

chkconfigmysqldon

18

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

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

打開hive-site.xml,添加:

若配置文件代碼太多用簡版site文件替換

<property>

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

<value>/tmp/hive</value>

</property>

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

<property>

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

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

19

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

</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è)計

viperties

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

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

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

/usr/local/bigdata/hive/scatchdir,日志文件也需要手動在本地創(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測試

啟動hadoop:start-dfs.sh

start-yarn.sh

啟動hive(hive安裝目錄下):

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

bin/schematool–initSchema–dbTypemysql

完成后再啟動hive:

bin/hive

21

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

4.1.4Zookeeper完全分布式集群搭建

i安裝Zookeeper

通過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ù)存儲路徑配置

在最后添加加以下配置:

server.1=bigdata:2888:3888

server.2=bigdata01:2888:3888

server.3=bigdata02:2888:3888

配置服務(wù)器編號

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

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

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

在myid文件中添加與server對應(yīng)的編號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è)計

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

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

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

zookeeper群啟腳本

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

mkdirbin#新建一個bin目錄

vim/bin/zk.sh#編寫腳本

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

zk.sh腳本代碼編寫如下:

#!/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è)計

下次運(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,通過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個文件,copy

溫馨提示

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

評論

0/150

提交評論