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

下載本文檔

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

文檔簡介

湖南商務職業(yè)技術學院畢業(yè)設計

目錄

1項目背景1

1.1項目的背景1

1.2項目的意義1

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

2.1Hadoop框架2

2.1.1HDFS存儲技術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)框架設計3

3.1框架版本選型3

3.2系統(tǒng)技術架構4

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

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

3.5Hbase集群規(guī)劃5

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

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

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

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

3.7Web客戶端設計9

4系統(tǒng)實現(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

湖南商務職業(yè)技術學院畢業(yè)設計

4.1.5Hbase完全分布式24

4.1.6Sqoop安裝配置26

4.2離線數(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客戶端實現(xiàn)30

4.3.1開發(fā)環(huá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驗證(查看是否啟動成功)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小結54

II

湖南商務職業(yè)技術學院畢業(yè)設計

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

1項目背景

1.1項目的背景

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

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

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

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

1.2項目的意義

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

湖南商務職業(yè)技術學院畢業(yè)設計

2.1Hadoop框架

2.1.1HDFS存儲技術

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

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

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

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

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

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

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

2.1.2MapReduce編程框架

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

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

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

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

map端的結果。

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

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

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

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

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

2.2Hive框架

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

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

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

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

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

2

湖南商務職業(yè)技術學院畢業(yè)設計

2.3Sqoop框架

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

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

到MySQL關系型數(shù)據(jù)庫中,同時也支持相互傳輸。其原理是將導入或導出命令

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

2.4Zookeeper框架

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

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

一致等。

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

作。

2.5Hbase框架

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

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

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

3.1框架版本選型

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

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

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

表3-1框架版本選擇

框架(Apache)版本

Hadoop2.7.3

Hive2.3.4

Sqoop1.4.6

Zookeeper3.7.0

Hbase1.4.0

3

湖南商務職業(yè)技術學院畢業(yè)設計

3.2系統(tǒng)技術架構

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

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

1)數(shù)據(jù)獲?。?/p>

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

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

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

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

通過Sqoop框架遷移至HDFS。

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

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

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

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

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

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

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

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

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

4)建立javaWeb項目:

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

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

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

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

4

湖南商務職業(yè)技術學院畢業(yè)設計

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

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

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

主機名IP地址節(jié)點類型

bigdata6master

bigdata017slave1

bigdata028slave2

ii節(jié)點規(guī)劃

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

服務bigdatabigdate01bigdata02

NameNode√

SecondaryNameNode√

DataNode√√√

ResourceManager√

NodeManager√√√

JobHistoryServer√

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

表3-4zookeeper規(guī)劃

bigdatabigdata01bigdata02

zookeeperzookeeperzookeeper

3.5Hbase集群規(guī)劃

表3-5hbase規(guī)劃

主機名IP地址職責

bigdata6HBase主節(jié)點

bigdata017HBase備用節(jié)點

5

湖南商務職業(yè)技術學院畢業(yè)設計

3.6離線數(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ù)基于一個明確的主題,只存儲與主題相關的數(shù)據(jù),并排

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

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

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

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

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

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

所示。

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

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

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

各層的作用如下:

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

即可。

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

始數(shù)據(jù)層的粒度與結構相似。

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

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

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

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

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

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

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

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

6

湖南商務職業(yè)技術學院畢業(yè)設計

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

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

速度較快且支持切片。

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

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

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

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

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

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

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

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

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

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

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

些列的中間結果表,提升公共指標的復用性,減少重復加工的工作。

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

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

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

例如,因為所有省份各城市的疫情數(shù)據(jù)表字段都一致,可將它們反復加載

進一張表中,最終字段表3-6所示:

表3-6普通表

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

shengfenstring否否省份

citystring否否城市

yiqingdatedate否否日期

leiji_quezhenint否否累計確診

xinzeng_quezhenint否否新增確診

leiji_zhiyuint否否累計治愈

xinzeng_zhiyuint否否新增治愈

leiji_siwangint否否累計死亡

7

湖南商務職業(yè)技術學院畢業(yè)設計

xinzeng_siwangint否否新增死亡

xinzeng_wuzhenzhuangint否否新增無癥狀

xinzeng_bentuquezhenint否否新增本土確診

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

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

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

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

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

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

高風險城市表。

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

數(shù)據(jù)應用層(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關聯(lián)表

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

idint行鍵否序號

shengfenstring否否省份

citystring否否城市

yiqingdatedate否否日期

leiji_quezhenint否否累計確診

xinzeng_quezhenint否否新增確診

leiji_zhiyuint否否累計治愈

xinzeng_zhiyuint否否新增治愈

leiji_siwangint否否累計死亡

xinzeng_siwangint否否新增死亡

xinzeng_wuzhenzhuangint否否新增無癥狀

8

湖南商務職業(yè)技術學院畢業(yè)設計

xinzeng_bentuquezhenint否否新增本土確診

3.7Web客戶端設計

客戶端具體設計思路:

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

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

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

據(jù)。

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

設計流程如圖3-2:

圖3-2設計流程圖

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

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

4.1.1JDK配置

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

2)解壓安裝jdk:

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

mvjdk1.8.0_131/usr/local/bigdata/

如果系統(tǒng)默認安裝了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

湖南商務職業(yè)技術學院畢業(yè)設計

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

exportPATH=$PATH:${JAVA_PATH}

按ESC,輸入:wq保存退出

4)讓~/.bashrc生效

source~/.bashrc

5)確認JDK安裝成功

java–version

4.1.2搭建Hadoop集群完全分布式

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

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

三臺都要修改

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

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

2)主機名配置

直接刪除以前的,添加當前節(jié)點主機名(三臺都要修改)

vi/etc/hostname

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

vi/etc/hosts

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

添加)

6bigdata

10

湖南商務職業(yè)技術學院畢業(yè)設計

7bigdata01

8bigdata02

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

servicenetworkrestart

ii設置SSH無密碼登錄節(jié)點

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

ssh-keygen-trsa

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

ssh-copy-idbigdata#bigdata為主機名

ssh-copy-idbigdata01#bigdata01為主機名

ssh-copy-idbigdata02#bigdata02為主機名

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的主目錄下操作)

進入Hadoop主目錄:cd/usr/local/bigdata/hadoop

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

設置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

湖南商務職業(yè)技術學院畢業(yè)設計

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

湖南商務職業(yè)技術學院畢業(yè)設計

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

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

<value>bigdata</value>

</property>

<property>

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

13

湖南商務職業(yè)技術學院畢業(yè)設計

<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>

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

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

<value>true</value>

</property>

<property>

<!--設置聚合日志于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復制出一個mapred-site.xml。

復制命令:

14

湖南商務職業(yè)技術學院畢業(yè)設計

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

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

文件里配置:

<configuration>

<property>

<!--指定MapReduce框架運行于YARN上面-->

<name></name>

<value>yarn</value>

</property>

<property>

<!--設置MapReduce歷史服務器安裝的位置與其端口號-->

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

<value>bigdata02:10020</value>

</property>

<property>

<!--設置歷史服務器web頁面地址與端口-->

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

<value>bigdata02:19888</value>

</property>

<property>

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

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

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

</property>

<property>

<!--設置存儲運行日志的最終目錄-->

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

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

</property>

</configuration>

6、修改/etc/hadoop/slaves

添加所有節(jié)點主機名bigdata、bigdata01、bigdata02。

15

湖南商務職業(yè)技術學院畢業(yè)設計

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

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

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

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

拷貝主節(jié)點已安裝的hadoop分別到bigdata01和bigdata02兩臺節(jié)點

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é)點

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

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

拷貝主節(jié)點的jdk到bigdata01和bigdata02兩臺節(jié)點

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主機下執(zhí)行

格式化命令:

hdfsnamenode-format

vii配置時間同步

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

步服務器(NTP)來進行時間同步。

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

10分鐘與bigdata進行同步一次。

1)安裝NTP服務器

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

rpm-qa|grepntp

安裝命令:

yuminstall-yntp#使用yum在線安裝

16

湖南商務職業(yè)技術學院畢業(yè)設計

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

servicentpdstart#啟動NTP服務

chkconfigntpdon#開機自啟動,永久啟動

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

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

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

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

bigdata

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

③啟動時間同步

啟動NTP服務:

servicentpdstart&chkconfigntpdon

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

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

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

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

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

17

湖南商務職業(yè)技術學院畢業(yè)設計

4.1.3Hive安裝配置

i軟件準備

通過SecureFX傳至虛擬機

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服務:

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)建用戶及授權:(給hive數(shù)據(jù)庫授權)

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

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

6)授權生效:

flushprivileges;

7)設置mysql開機自啟動

chkconfigmysqldon

18

湖南商務職業(yè)技術學院畢業(yè)設計

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

設置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復制兩份,一份更名為

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>

<!--默認的存儲位置-->

<property>

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

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

19

湖南商務職業(yè)技術學院畢業(yè)設計

</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

湖南商務職業(yè)技術學院畢業(yè)設計

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復制到

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

($HADOOP_HOME相當于/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復制到$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未初始化等錯誤信息導致無法啟動,執(zhí)行:

bin/schematool–initSchema–dbTypemysql

完成后再啟動hive:

bin/hive

21

湖南商務職業(yè)技術學院畢業(yè)設計

4.1.4Zookeeper完全分布式集群搭建

i安裝Zookeeper

通過SecureFX將apache-zookeeper-3.7.0-bin.tar.gz傳至虛擬機。

解壓

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

配置服務器編號

cd/usr/local/bigdata/zk#進入Zookeeper家目錄

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

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

在myid文件中添加與server對應的編號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

湖南商務職業(yè)技術學院畢業(yè)設計

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

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

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

zookeeper群啟腳本

cd/home/tan/#進入用戶家目錄

mkdirbin#新建一個bin目錄

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

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

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

湖南商務職業(yè)技術學院畢業(yè)設計

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

zk.shstatus

4.1.5Hbase完全分布式

i安裝hbase

1)將hbase-1.4.0-bin.tar.gz,通過SecureFX傳至虛擬機

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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論