Hadoop生態(tài)系統(tǒng)及開(kāi)發(fā) 實(shí)訓(xùn)手冊(cè) 實(shí)訓(xùn)綜合案例_第1頁(yè)
Hadoop生態(tài)系統(tǒng)及開(kāi)發(fā) 實(shí)訓(xùn)手冊(cè) 實(shí)訓(xùn)綜合案例_第2頁(yè)
Hadoop生態(tài)系統(tǒng)及開(kāi)發(fā) 實(shí)訓(xùn)手冊(cè) 實(shí)訓(xùn)綜合案例_第3頁(yè)
Hadoop生態(tài)系統(tǒng)及開(kāi)發(fā) 實(shí)訓(xùn)手冊(cè) 實(shí)訓(xùn)綜合案例_第4頁(yè)
Hadoop生態(tài)系統(tǒng)及開(kāi)發(fā) 實(shí)訓(xùn)手冊(cè) 實(shí)訓(xùn)綜合案例_第5頁(yè)
已閱讀5頁(yè),還剩41頁(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)介

模塊七大數(shù)據(jù)日志分析綜合項(xiàng)目案例

7.1項(xiàng)目目的

當(dāng)今時(shí)代,數(shù)據(jù)與我們息息相關(guān),我們每天都會(huì)接觸到各種軟件、瀏覽各種

網(wǎng)站,在生活上,也不僅僅是接觸信息,其實(shí)也是在生產(chǎn)很多信息,留下很多的

數(shù)據(jù),只是人們可能沒(méi)有察覺(jué)而已。本模塊將會(huì)總結(jié)前面模塊所學(xué)習(xí)的大部分組

件,設(shè)計(jì)成了綜合項(xiàng)目案例,讓大家對(duì)大數(shù)據(jù)的認(rèn)識(shí)提到一個(gè)新的高度,并且熟

悉生產(chǎn)上的開(kāi)發(fā)流程。

7.2項(xiàng)目意義

本項(xiàng)目案例的日志指的是用戶行為日志,用戶行為日志可以類比于網(wǎng)站或者

app的眼睛,開(kāi)發(fā)人員可以從中了解到用戶的主要來(lái)源、喜歡的內(nèi)容、用戶的訪

問(wèn)設(shè)備等等。也可以將此比喻為網(wǎng)站或者app的神經(jīng),通過(guò)用戶行為口志的分析,

可以清楚網(wǎng)站或者app的優(yōu)缺點(diǎn),了解用戶使用過(guò)程中遇到的各種問(wèn)題以及反饋,

進(jìn)而有利于優(yōu)化自己的網(wǎng)站或者app,提升用戶的體驗(yàn)。此外,通過(guò)FI志分析,

還可以通過(guò)用戶的行為日志,挖掘出有價(jià)值的信息,將信息進(jìn)行歸類,劃分主要

的傾向人群,有利于實(shí)現(xiàn)業(yè)務(wù)需求。

7.3項(xiàng)目背景

此處用戶每次訪問(wèn)網(wǎng)站或者app時(shí),都會(huì)留下很多的行為數(shù)據(jù),這些行為包

括訪問(wèn)、瀏覽、搜索、點(diǎn)擊等等。每一個(gè)行為動(dòng)作所產(chǎn)生的數(shù)據(jù)都可以被后臺(tái)采

集到。比如說(shuō)點(diǎn)擊的URL、從哪個(gè)URL跳轉(zhuǎn)過(guò)來(lái)的(referer)>頁(yè)面上的停留時(shí)

間等等。當(dāng)有了數(shù)據(jù)之后,就可以進(jìn)行大數(shù)據(jù)的分析統(tǒng)計(jì)等等工作了。

7.4項(xiàng)目架構(gòu)

先來(lái)了解一下本次項(xiàng)目的架構(gòu),再來(lái)總結(jié)數(shù)據(jù)處理的流程,如圖7-1所示。

|依[(=>

Webserver

app

日志閣空:/home/access.log

圖7-1項(xiàng)目架構(gòu)流程圖

當(dāng)訪問(wèn)網(wǎng)站或者使用app的時(shí)候,都會(huì)產(chǎn)生許多日志信息,存放到日志服務(wù)

器里面??蚣軋D中Webserver指的是網(wǎng)站或者叩p的后臺(tái),而本實(shí)訓(xùn)將日志信息

直接存放到服務(wù)器的/home/access.log路徑下,然后通過(guò)Flume對(duì)采集到的信息

進(jìn)行路由,此處路由分兩條主線,--條是直接將數(shù)據(jù)采集到HDFS,讓MapReduce

對(duì)HDFS上的數(shù)據(jù)進(jìn)行清洗或者離線分析,分析完后再將結(jié)果存放到傳統(tǒng)數(shù)據(jù)庫(kù)

中,此處是使用MySQL。Flume路由的另一條主線是與Kafka整合,將消費(fèi)的數(shù)

據(jù)存儲(chǔ)到由HBase中,當(dāng)然此處的Kafka也可以與SparkStreamingsStorm>Flink

等組件整合,實(shí)現(xiàn)實(shí)時(shí)流處理主線。Kafka與HBase整合完后,HBase可以與傳

統(tǒng)的業(yè)務(wù)系統(tǒng)整合,也可以與其他組件整合,如圖7-1中將HBase與Hive進(jìn)行

整合,目的是實(shí)現(xiàn)通過(guò)類SQL對(duì)HBase中的數(shù)據(jù)進(jìn)行高效的分析。最后,這兩條

主線可以與ECharts整合,對(duì)數(shù)據(jù)進(jìn)行可視化。

1.數(shù)據(jù)處理流程

綜上所述,可以將數(shù)據(jù)處理流程歸結(jié)為五大步驟:數(shù)據(jù)采集->數(shù)據(jù)清洗->

數(shù)據(jù)分析->數(shù)據(jù)入庫(kù)->數(shù)據(jù)可視化

1)數(shù)據(jù)采集

可以使用Flume對(duì)數(shù)據(jù)進(jìn)行采集,將web日志寫(xiě)入到HDFS、Kafka或者HBase

等等中。

2)數(shù)據(jù)清洗

可以使用MapReduce、Spark、Hive、Flink或者其他的一些分布式計(jì)算框架,

對(duì)數(shù)據(jù)進(jìn)行清洗,先過(guò)濾掉沒(méi)有意義的數(shù)據(jù),如臟數(shù)據(jù)或者與業(yè)務(wù)不相關(guān)的數(shù)據(jù)

等等,清洗完之后的數(shù)據(jù)可以存放在HDFS或者Hive、SparkSQL等等中。

3)數(shù)據(jù)處理

按照需求對(duì)相應(yīng)業(yè)務(wù)進(jìn)行統(tǒng)計(jì)和分析,可以使用數(shù)據(jù)清洗時(shí)的計(jì)算框架。

4)數(shù)據(jù)處理結(jié)果入庫(kù)

處理的結(jié)果可以存放到RDBMS、NoSQL等數(shù)據(jù)庫(kù)中。

5)數(shù)據(jù)可視化

當(dāng)數(shù)據(jù)入庫(kù)之后,可以開(kāi)發(fā)各種各樣的圖形億界面對(duì)分析結(jié)果進(jìn)行展示,比

如說(shuō)餅圖、柱狀圖、地圖、折線圖等等,可以借助的工具有ECharts、DataV.HUE、

Zeppelin>Kibana等。

7.5項(xiàng)目需求

當(dāng)獲取到了數(shù)據(jù),可以從中挖掘出一些價(jià)值,想要挖掘什么價(jià)值,取決于業(yè)

務(wù)能力水平,而能否實(shí)現(xiàn),則取決于技術(shù)本身的能力以及所擁有的數(shù)據(jù)維度有多

廣有多完善,而實(shí)現(xiàn)的難度則與數(shù)據(jù)的質(zhì)量息息相關(guān)。本次項(xiàng)目的數(shù)據(jù)采用模擬

的方式生成,自定義的數(shù)據(jù)有ip、時(shí)間、訪問(wèn)的URL、跳轉(zhuǎn)過(guò)來(lái)的網(wǎng)址、狀態(tài)碼。

主要有5個(gè)字段,當(dāng)然,此數(shù)據(jù)可以自行修改自行生成,也可以拿真實(shí)的數(shù)據(jù)來(lái)

操作?;跀?shù)據(jù),可以實(shí)現(xiàn)的業(yè)務(wù)場(chǎng)景有非常多,自己可以嘗試去多挖掘。比如

說(shuō),統(tǒng)計(jì)哪三個(gè)省份的用戶訪問(wèn)網(wǎng)站最頻繁?統(tǒng)計(jì)訪問(wèn)網(wǎng)站最頻繁的時(shí)間段是哪

個(gè)?統(tǒng)計(jì)過(guò)去10個(gè)小時(shí)內(nèi),用戶的訪問(wèn)量有多少?還有很多,都可以實(shí)現(xiàn)。

為了更好地與前面模塊的內(nèi)容銜接,也為了降低學(xué)習(xí)的難度,本次項(xiàng)FU勺業(yè)

務(wù)需求是統(tǒng)計(jì)每天的用戶訪問(wèn)量。

7.6業(yè)務(wù)實(shí)現(xiàn)

1.準(zhǔn)備工作

需要準(zhǔn)備好開(kāi)發(fā)工具和所需要的軟件的安裝包,前面的實(shí)訓(xùn)己經(jīng)準(zhǔn)備好了。

所以此處不再做過(guò)多說(shuō)明。

在實(shí)操的時(shí)候,應(yīng)確保各軟件的版本與本書(shū)一致,不一致也應(yīng)該確保大扳本

保持一致;如不相同,遇到問(wèn)題,請(qǐng)先自行搜索與自己版本相關(guān)的解決方案。

2.效果提前預(yù)覽

項(xiàng)目的最終效果如圖7-2所示。

統(tǒng)計(jì)每天用戶的訪問(wèn)量,雙

2022111120221113202211102022111420221112

圖7-2項(xiàng)目展示效果圖

說(shuō)明:具體的次數(shù)每個(gè)人會(huì)不相同。

3.實(shí)現(xiàn)步驟

接下來(lái)將一步一步來(lái)實(shí)現(xiàn),主要分為以下七大步驟:

步驟一、模擬日志生產(chǎn)

步驟二、編寫(xiě)Flume配置文件

步驟三、Flume整合Kafka

步驟四、Flume與HDFS、Kafka整合

步驟五、Kafka與HBase整合

步驟六、MapReduce分析HDFS上的數(shù)據(jù)并寫(xiě)入到MySQL

步驟七、ECharts與MySQL整合實(shí)現(xiàn)數(shù)據(jù)可視化

1)模擬日志生產(chǎn)

①新建一個(gè)名稱為logstat的項(xiàng)目,關(guān)鍵設(shè)置選項(xiàng)如圖7-3所示。

因NewProject

Name:logstat

EmptyProject

Location:-\ldeaProjects

Projectwillbecreatedin:-\ldeaPrqjects\logstat

Generators

tYlMavenArchetypeCreateGitrepository

vJavaFX

Language:JavaKotlinGroovyHTML+

KKotlinMultiplatform

◎ComposeMultiplatformBuildsystem:inrellUMavenGradle

(JFIDEPlugin

JDK:曰11OracleOpenJDKversion11.0.6▼I

MAndroid

Addsamplecode

vAdvancedSettings

Groupld:com.bigdata.hadoop

Artifactld:logstat

圖7-3新建項(xiàng)目

項(xiàng)目新建好后,界面如圖7-4所示。

3E*eidrtViewN.如teCodefiefactoc|tuidRunlookVCS宣MowHdp

109ftMnlpom.xml*▼\CurrentFie▼

<?x?lverslon-"1.0*tncodlne-,UTF-8"?>

〈projectxatns=ahttp://aavon.apache.org/PI

xatns:i5i="http://vaw.vS?org/2。。

xsl:sch?Mlocation'http://Mv?n

<?o(]?IYerslon>4.e.e</BodelVerslon>

■rewurcc

>Hte$t

vgroupldxo,.blgdsta.hado&p</groupld>

tnpom.nml

>*txtenwlUbrariei<artlf?ctld>lo5)5tat</artifactld>

IScritche5andComolef<v?rsion>1.9-SKAPSH0T</Yer5ion>

<prop0rtl?s>

<??v?n.co?pi.5^urc?>ll</a?ven.COB^Ii?r.sovrct>

<a?v?n.compiler?targ0t.coFl?廣.tar9?t>

<proj?ct.buil.d.s(xirceEncodin9>UTF*8</projtct.build.sourceEncodin9>

</prop?rtles>

</pro1?ct>

1HBM111HHi1111HB11aHi111HBM1HHl11H1HHl1111H1aBMprojectMti<aclld

VVmiocCorM■TOOOV■T?r*wwiOSOTMCM、BuM9D^nAmcm

Xmnk?dprebuittthdredindexesRetlxetheindexhqbmeandCPUlo^dwithprebuiltJDKihoredindexes//AUay%dowik?d//Dowrkadonce//(4AQ837IfUT?4spec%

圖7-4界面總覽

接著,在java目錄里面新建包c(diǎn)om.bigdata.hadoop.generate

操作如圖7-5、圖7-6所示。

圖7-5新建Package

NewPackage

com.bigdata.hadoop.generate

圖7-6給新建包命名

新建GenerateLog類,里面編寫(xiě)模擬日志生成的主程序。操作過(guò)程如圖7-7、

圖7-8所示。

Bijava

<modelVersion>4.8.6</modelVersion>

Elcom.bigdata.hadoop.generate^i

New>QJavaClass

圖7-7新建Class

NewJavaClass

QGenerateLog|

QClass

OInterface

OEnum

Annotation

圖7-8給新建類命名

②編寫(xiě)代碼

packagecom.bigdata.hadaop.generate;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.utiLCalendar:

importjava.util.Date;

importjava.util.Random;

importjava.util.concurrent.TimeUnit;

publicclassGenerateLog{

//一、數(shù)據(jù)定義

//I、url地址

publicstaticString[]urlPaths={

"article/l02.html",

"article/103.html';

"article/104.html",

"article/105.

"article/106.html",

"article/107.html",

"article/l()8.htmr;

"article/109.html",

,'video/322,\

"tag/listn

〃2、ip數(shù)字

publicstaticSlring[]ipSplices=("102'\"71",0145","33","67'\"54","164","121");

〃3、http網(wǎng)址

publicstaticString1]httpRcfcrcrs={

"/s?wd=%s",

"hltps://w\/web?quer),=%s'\

"/search?q=%s",

"hups:〃/search?p=%s"

);

〃4、搜索關(guān)鍵字

publicstaticString1]searchKeyword={

”復(fù)制粘貼玩大數(shù)據(jù)”,

”網(wǎng)站用戶行為分析”,

"Elasdcsearch的安裝”,

"Kallca的安裝及發(fā)布訂閱消息系統(tǒng)”,

"window?系統(tǒng)上Centos7的安裝",

”學(xué)習(xí)大數(shù)據(jù)常用Linux命令”,

"Docker搭建Spark集群"

};

//5、狀態(tài)碼

publicstaticString[]statusCodes={"200","404,\"500"};

//二、隨機(jī)生成數(shù)據(jù)

//I、隨機(jī)生成ip

publicstaticStringsamplelpO{

intipNum;

Stringip=

for(inti=0;i<4;i++){

ipNum=newRandom().nextInt(ipSplices.length);

ip+=+ipSplices[ipNum];

)

returnip.substrng(l);

)

〃2、隨機(jī)生成時(shí)間

publicstaticStringformatTime(){

DateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");

Calendarcalendar=Calendar.getlnstance();

//獲取當(dāng)前時(shí)司

DatecurrcntDate=calendar.getTime();

//設(shè)置一個(gè)起始時(shí)間(七天前)

calendar.add(Calendar.DATE,-7);

DatestartDale=calendar.getTime();

//獲取七天內(nèi)為一個(gè)隨機(jī)時(shí)間

longdateTime=startDate.getTime()+(long)(newRandom().nextDouble()*

(currcntDate.gctTimc()-startDatc.gctTimc()));

returndatcFormat.format(datcTimc);

}

//3、隨機(jī)生成uH

publicstaticStringsampleUrl(){

inturINum=newRandom().nextInt(urlPa(hs.length);

returnurlPaths[urlNum];

}

//4、隨機(jī)生成檢索

publicstaticStringsampleReferer(){

Randomrandom=newRandom();

intrefNum=random.nextlnt(httpReferers.length);

intqueryNum=random.nextlnt(searchKeyword.length);

if(random.nextDoubleO<0.2){

return

1

Stringquery_s(r=searchKeyword[queryNum];

StringreferQuery=String.fbnnat(httpReferers[refNumJ,query_str);

returnreferQuery;

)

〃5、隨機(jī)生成狀態(tài)碼

publicstaticStringsampleStatusCode(){

intcodeNum=newRandom().nextInt(statusCodes.length);

returnstatusCodes[codeNumJ;

1

//6、生成日志方法

〃輸出日志格式:02,2022-11-1409:06:0(1,"GET/tag/listHTTP/1.1二https://

/search?p=M$iJ粘貼玩大數(shù)據(jù),404

publicstaticStringgenerateLogO{

Stringip=samplelpO;

StringnewTime=fbrmatTime();

Stringurl=sampleUrl();

Stringreferer=sampleReferer();

Stringcode=samplcStatusCodc();

Stringlog=ip++newTime++"V'GET./"+url+"HTTP/1.1\""+"J+

referer++code;

System.oul.println(log);

returnlog;

)

〃三、主類

publicstaticvoidmain(S(ring[]args)(hrowslOException,InlerruptedException{

〃desi:生成日志的路徑

//Stringdest=7home/access.log";

Stringdest="access.log1';

Filefile=newFilc(dcst);

//num:每次生成條數(shù)

//sleepTime:多久生成一次

intnum,sleepTime;

if(args.length==2){

num=Integer.valueOf(args[0]);

sleepTime=Integer.valueOf(args[1]);

}else{

num=50;

sleepTime=10;

)

while(true){

for(inti=0;i<num;i++){

Stringcontent=generateLogO+"\n";

FileOutputStreamfos=newFileOutputStream(file,true);

fos.write(content.getBytes());

③代碼解釋

Stringdest='7home/access.log,';

若解開(kāi)注釋,使用此行代碼,則表示模擬生產(chǎn)的日志所存儲(chǔ)的路徑

/home/access.log,需要注意的是,此為服務(wù)器上的路徑,而且是root用戶才具有

寫(xiě)權(quán)限,如果不是201用戶請(qǐng)修改成其他可寫(xiě)路徑。

在Windows系統(tǒng)的編輯器開(kāi)發(fā)的時(shí)候,可以改成Windows上的路徑來(lái)測(cè)試

一下生成的日志是否為自己想要的,如DA\access.log,表示生成的日志在

D:\\access.logo若代碼中直接使用access.log,表示直接生成文件在項(xiàng)目目錄下。

當(dāng)執(zhí)行此類時(shí),日志就會(huì)不斷生成到所設(shè)置的路徑,而日志格式如圖7-9所示。

45,2022-11-0920:13:38,"GET/article/104.htmlHTTP/L1",

/隧2向?口=學(xué)習(xí)大數(shù)據(jù)常用Linux命令,200

64,2022-11-1011:39:16,"GET/article/104.htmlHTTP/1.1°,-,200

21,2022-11-1405:51:41,"GET/article/104.htmlHTTP/1.1",hllps://search.yah

/search?p=Elasticsearch的安裝,404

3,2022-11-1208:45:44,"GET/video/322HTTP/LIu,/search?

q=window7系統(tǒng)上Centos7的安裝,404

4,2022-11-1412:22:46,"GET/article/102.htmlHTTP/1.1",https://www.sogou.co

m/web?quer),=Elasticsearch的安裝,500

64,2022-11-0804:31:54,"GET/article/104.htmlHTTP/1.1",https://www.baidu

com/s?wd=網(wǎng)站用戶行為分析,200

02,2022-11-1020:13:50,"GET/article/104.htmlHTTP/1.1",https://www.sog

/web?query=Kafka的安裝及發(fā)布訂閱消息系統(tǒng),200

45,2822.11-8926:13:38r-GET/article/m.htilHTTP/1.1學(xué)習(xí)大好推常用Linux命令,288

33,102.71,164,2922-11-10ll:39:16r-GST/artlcle/lG4.htalHTTP/1.1?.?.288

145.33.102,121,2022-11-1465:51:41r%ET/articlt/lG4.ht?XHTTP/1.1”,“a.=仃Ci的安裝,4強(qiáng)

3,2922-11-1208:45:44,"GEF/vldeo/322HTTP/1.1

67.67.33.5^,2922-11-1412:22:46,"GET/articl?/ie2.ht?lHTTP/1.1

16^.022-11-0884:31:54J$ET/4'ticle/m.ht?lHTTP/1.1,https網(wǎng)站用戶行為分析,299

162.145.16^.102,2022-11-1026:13:58,,GET/artlcle/ie4.htfllHTTP/1.1ragoiKCon/RetPauary二Kafka的甜片處而打闋沼息的統(tǒng),2

145.164.16^.164,2622-11-6984:34:49,,GET/vldeo/522HTTP/1.1".https:〃cn.blnq.:on/search?q學(xué)習(xí)大故提常用Linux/令.288

182.121.121.71,2022?ll?8887:83:02,*ETHTTP/1.1",Ztp??:〃cn.binq.二學(xué)習(xí)大施常用"nu*命令,288

圖7-9H志格式

生成隨機(jī)時(shí)間,為了展示效果美觀,本實(shí)訓(xùn)模擬生成七天的數(shù)據(jù),在實(shí)際操

作過(guò)程中,可以不模擬七天,直接返回當(dāng)天日期即可。

此外,還可以在執(zhí)行的時(shí)候添加參數(shù),第一個(gè)參數(shù)為一個(gè)批次生成的條數(shù),

第二個(gè)參數(shù)為多少秒生成一次,如不設(shè)置,則默認(rèn)是每10秒生成50條。

④測(cè)試生成日志

接下來(lái)可以先在Windows本地測(cè)試運(yùn)行,觀察運(yùn)行結(jié)果是否有問(wèn)題。注意目

前所設(shè)置的路徑為:access.logo如圖7-10所示。

〃三、主類

publicstaticvoidmain(String[]args)throwslOException,Interrupte

〃dest:生成日志的路徑

//Stringdest="/home/access.log";

Stringdest="access.log";

Filefile=newFile(dest);

圖7-10設(shè)置路徑并執(zhí)行

點(diǎn)擊執(zhí)行按鈕,稍等一小會(huì),可以發(fā)現(xiàn)項(xiàng)目目錄下有日志文件access.log生

成了,如圖7-11所示;控制臺(tái)也有顯示,如圖7-12所示。

logstatsrcmainjavacombigdatahadoopgenerate0GenerateLogQmain

V

Q>國(guó)...?I。一fTIpom.xml(logstat)0GenerateLog.java

O

XvBglogstatC:\Users\shaonaiyiStringreferer=sampleRefererO;

>?.ideaStringcode=sampleStatusCodeO;

>MlsrcStringlog=ip+","+newTime+'

>target

ns1,一System.out.printin(log);

白access.log

returnlog;

DIpom.xmlI

r

>lllllExternalLibraries

%ScratchesandConsoles

〃三、主類

121?@publicstaticvoidmain(String[]args)

圖7-11查看文件日志

"C:\Progra?Files\Java\jdk-11.6.6\bir\jdva,exe**??javaagent:C:\ProgranFiles\Jet8ralns\ldeaIC-2e22\llb\lded.rt.jars53730:C:\PrcgranF:

45,2922-11-6920:13:38,"GCT/articl?/164.htiiXHTTP/1.1tp5://cn.b^nq.c。L/$?!鰎ch?q=學(xué)習(xí)大觸段京用Linux命令,2。。

64,2022-11-1811:39:16,-6(1/articl?/lG4.ht?\HTTP/1.1\-r2GG

145.33.102,121,2822-11-1^85:51:41,*€ET/artlcle/164.htnlHTTP/1.1'.https:〃search.yahg.con/se"ch?p=El』t"se"cl^)^ig.4M

7

3,2022-11-1268:45:44,"GE1/vldeo/322HTTP/1.1?rhUflJ.ZZcnJang.CQ11/1cATCh2fl=wInUtt?^WltCtntos7?5?r404

^,2622-11-1^12:22:46/GEI/article/ie2.htnlHTTP/1.1%http$.$o£oy.,wn/jieb?aueryEldlcswaah的安第,588

64,2622-11-6884:31:54,PET/article/m.htnlHTTP/1.1?fhttos://總*?.baldUACon/slyd二或M用戶為分析.288

62/2622-11-1028:13:56/6£1/artic\?/m.htn\HTTP/1.1??hr”?〃?皿.“qou.8"?Qb?Q“r=Kafk金的犯K及發(fā)布訂閱消息察地.288

圖7-12控制臺(tái)中查看結(jié)果

⑤打包

接下來(lái)可以將代碼打包到服務(wù)器上執(zhí)行,使生成的日志在服務(wù)器的/home路

徑下。此時(shí)需要注釋掉Windows路徑,修改為L(zhǎng)inux服務(wù)器的路徑,如圖7-13

所示。

〃三、主類

publicstaticvoidnain(String[]args)throwslOException,InterruptedException{

〃dest:生成日志的路徑

Stringdest="/home/access.log";

//Stringdest="access.log";

Filefile=newFile(dest);

圖7-13修改日志路徑

此外,因?yàn)榉?wù)器上的JDK版本是8,而在Windows的版本為jdkll的話,

需要設(shè)置一下打包的項(xiàng)目語(yǔ)言級(jí)別才能兼容。點(diǎn)擊“ProjectSlructuQ-'Projecl”,

在“LanguageLevel"選擇服務(wù)器上相應(yīng)的語(yǔ)言級(jí)別,JDK8對(duì)應(yīng)的是8級(jí)別,如

圖7-14所示。

目ProjectStructure

4-

Project

ProjectSettings

Defaultsettingsforallmodules.ConfiguretKscparametersforeachmoduleonthemodulepageasneeded.

Modules

Name:logstat

Libraries

Facets

SDK:'110racleOpenJDKversion11.0.6▼£dit

Artifacts

PlatformSettings

Languagele/d:8-lambdas,typeannotationsetc.▼

SDKs

GlobalLibraries

Compileroutput:-\ldeaProjects\logstat\out

ProblemsUsedformodules'subdirectories.ProductionandTestdirectoriesforthecorrespondingsources.

圖7-14選擇對(duì)應(yīng)的語(yǔ)言級(jí)別

此外,還需要修改一下pom.xml文件中編譯代碼的JDK版本,此處修改為8,

默認(rèn)是11。如圖7-15所示。

目EilcEditViewNavigateCodeBefactorQuikiRunJoolsVCSWindowHelplogstat-pom.xml(logstat)

logstatHIpom.xml

1H...?Z■=■。一tilpom.xml(logstat)0GenerateLog.java

dyBjlogstat<?xalversion=M1.0-encoding=,'UTF-8"?>

?>M.idea<projectxnlns="http://maven.apache.org/POM/4.0.0M

>xnlns:xsl=Mhttp://www.wJ.org/20Bl/XMLSchema-instancew

>,targetxsi:schenaLocation-Mhttp://maven.apache.org/POM/4.0.0http://naven

access.log

<modelVersion>^.8.0</?odelVersion>

|mpomxml|

>lllliExternallibraries

<groupId>com.bigdata.hadoop</groupld>

%ScratchesandConsoles

<artifactld>logstat</artifac:ld>

<version>1.0-SNAPSHOT</version>

<properties>

<maven.conpiler.source>8</raaven.compiler.source>

<maven.conpiler.target>8</maven.compiler.target>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

17〈/project)

圖7-15設(shè)置編譯的JDK版本

接著就可以將代碼進(jìn)行打包了,先點(diǎn)擊編輯器右側(cè)欄的“Maven”,再依次

找到“package",如圖7-16所示。

GenerateLog▼A益(VQur

-E

MavenM

va

▼0,士+Q仆0W,aAne

nee"

vftlogstat-

.0.0hQAVEN?A?LifecycleN

Qcleanm

Uvalidaten

Qcompiles

btest

Mpackage

0verify

Qinstall

Qsite

Qdeploy

>%Plugins

圖7-16打包項(xiàng)目

雙擊“package”按鈕,則可以對(duì)項(xiàng)目進(jìn)行打包,如打包成功,控制臺(tái)將會(huì)顯

示構(gòu)建成功的標(biāo)志。如圖7-17所示。

[INFO]

[INFO]BUILDSUCCESS

[INFO]-

[INFO]Totaltime:8.531s

[INFO]Finishedat:2622-11-14T16::15+08:66

[INFO]

Processfinishedwithexitcode0

圖7-17打包成功的標(biāo)志

打耍成后,發(fā)現(xiàn)項(xiàng)目里多了target文件夾,相應(yīng)的jar包也生成了。如圖

7-18所示。

logstatmpom.xml

Hlpom.xml(logstat)0GenerateLog.java

<projectxmlns="http://maven.apache

xmlns:xsi="http://www.v/3.o

xsi:schemaLocation="http:/

target<modelVersion>^i.0.0</modelVersi

classes

generated-sources

<groupld>com.bigdata.hadoop</gr

maven-archiver

<artifactld>logstat</artifactld

maven-status

11logstat-1.0-SNAPSHOT.iar.<version>l.0-SNAPSHOT(八ersion)

maccess.log

mpom.xml

溫馨提示

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