焦向雨 黃康輝 盧崢
【摘? 要】論文提出的大數(shù)據(jù)分析可視化系統(tǒng)主要處理實時性要求不高,但對決策很重要的離線數(shù)據(jù),如同種崗位不同地區(qū)工資對比情況,各熱門崗位數(shù)量統(tǒng)計,對顧客購買記錄進行統(tǒng)計等。利用大數(shù)據(jù)平臺進行海量數(shù)據(jù)的存儲、分析,提高客戶對事件的決策準(zhǔn)確率,將分析得出的數(shù)據(jù)結(jié)果以可視化的形式在瀏覽器上呈現(xiàn),以便用戶直觀看到數(shù)據(jù)的變化結(jié)果。
【Abstract】The big data analysis visualization system proposed in this paper mainly deals with the off-line data which is not required to be real-time, but is very important for decision-making, such as the contrast situation of the same post in different regions, the statistics of the number of various popular posts, the statistics of customer purchase records, etc. Using the big data platform to store and analyze the massive data can improve the accuracy of user's decision-making for the event, and present the data results in the form of visualization in the browser, so that users can see the change results of the data directly.
【關(guān)鍵詞】大數(shù)據(jù);分布式;Hadoop;可視化
【Keywords】big data; distributed; Hadoop; visualization
【中圖分類號】TP393? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻標(biāo)志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文章編號】1673-1069(2020)02-0151-02
1 概要設(shè)計
1.1 框架設(shè)計
1.2 設(shè)計思路
此架構(gòu)即Hadoop+JavaWeb(MVC模式)的結(jié)合用于模擬大量數(shù)據(jù)處理方式。通過利用Hadoop的特性進行分布式存儲,目的在于突破IO存儲瓶頸問題。項目的模擬數(shù)據(jù)主要為結(jié)構(gòu)化數(shù)據(jù),假設(shè)結(jié)構(gòu)化數(shù)據(jù)超過單機容量的范圍,那么便采用Hadoop生態(tài)圈進行架構(gòu)設(shè)計[1]。使用Hadoop集群的HDFS進行分布式存儲(HDFS便于管理和維護以及具有較高容錯性),采用Mapreduce(離線計算)進行數(shù)據(jù)的清洗與篩選。當(dāng)需要使用這些數(shù)據(jù)進行決策,可用Hive進行數(shù)據(jù)的清洗、提煉和分析之后存于HDFS中。由于Hive提供SQL功能,并且Hive-SQL可轉(zhuǎn)化為Mapreduce,因此,Hive可以對大量數(shù)據(jù)進行分析與處理[2]。
Hive是基于Hadoop的一個數(shù)據(jù)倉庫,還可以將結(jié)構(gòu)化數(shù)據(jù)映射成一張表,在本項目中,Hive與MySQL映射成一張表,通過Sqoop使Hive與MySQL進行數(shù)據(jù)交換。本著OLTP的思想,可以使HDFS為主(分布式存儲文件),MySQL為輔,通過Hive傳遞的實時性要求不高,但對決策很重要的數(shù)據(jù)(如同種崗位不同地區(qū)工資對比情況,各熱門崗位數(shù)量統(tǒng)計,對客戶購買記錄進行統(tǒng)計等)傳遞至MySQL。由于關(guān)系型數(shù)據(jù)庫維護方便、使用方便,支持SQL,可用于復(fù)雜查詢,便于滿足使用者的不同需求[3]。結(jié)合MVC思想,程序通過將Model和View代碼分離,實現(xiàn)了前后端的分離,其使Java后臺開發(fā)人員集中精力于業(yè)務(wù)邏輯,前端程序員集中精力于表現(xiàn)形式,使項目開發(fā)的分工更加明確,程序的測試更加簡便,提高了開發(fā)的效率[4]。
1.3 模塊設(shè)計
1.3.1 Hadoop模塊組成部分
HDFS、Hive、Sqoop、Mapreduce、MySQL。
1.3.2 JavaWeb模塊組成部分
Dao、Domain、Service、Utils。
1.3.3 前端模塊組成部分
HTML、JavaScript、Echarts、JSP(前后臺數(shù)據(jù)交互)、JSON(數(shù)據(jù)傳輸)。
2 詳細(xì)設(shè)計
2.1 上述架構(gòu)可拆分成兩部分設(shè)計
2.1.1 Hadoop平臺架構(gòu)組件的搭建
①分布式文件系統(tǒng):HDFS;②分布式計算引擎:Mapreduce;③數(shù)據(jù)分析引擎:Hive;④數(shù)據(jù)交換工具:Sqoop;⑤關(guān)系型數(shù)據(jù)庫:MySQL;⑥需注意的地方:當(dāng)主節(jié)點發(fā)生故障時,整個系統(tǒng)便會癱瘓,為了解決此問題,可選用ZooKeeper搭建HA。
2.1.2 JavaWeb平臺架構(gòu)組件的搭建
本次JavaWeb的開發(fā)采用MVC設(shè)計模式(Model View Controller)。Model表示應(yīng)用程序的數(shù)據(jù)核心,View表示數(shù)據(jù)顯示層,Controller表示控制層。MVC模式同時提供了對HTML、CSS和JavaScript的控制。其中,Model是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。View是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。Controller是應(yīng)用程序中處理用戶交互的部分,通??刂破髫?fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。MVC分層的同時也簡化了分組開發(fā),不同的開發(fā)人員可同時開發(fā)視圖、控制器邏輯和業(yè)務(wù)邏輯[5]。
2.2 架構(gòu)的整合說明
架構(gòu)Hadoop+JavaWeb(MVC模式)的結(jié)合可以模擬大量數(shù)據(jù)處理的方式,通過三臺虛擬機搭建Hadoop分布式集群,基于Hadoop的特性進行分布式存儲,有效解決了IO存儲的問題。由于Hadoop的HDFS存儲數(shù)據(jù)種類繁多(具有較高容錯性),可采用Mapreduce(支持離線大量數(shù)據(jù)的處理)進行數(shù)據(jù)的清洗與篩選。本項目的樣本數(shù)據(jù)主要是結(jié)構(gòu)化數(shù)據(jù)。因此,選用Hive作為數(shù)據(jù)分析引擎。Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,本身沒有專門的數(shù)據(jù)存儲格式,也沒有為數(shù)據(jù)建立索引,所以數(shù)據(jù)存儲在HDFS上。Hive支持SQL查詢,能將SQL查詢轉(zhuǎn)換為Mapreduce的job在Hadoop集群上執(zhí)行,并且其可以將結(jié)構(gòu)化數(shù)據(jù)映射成一張表。
但Hive不支持復(fù)雜語句查詢,為了滿足各種復(fù)雜的業(yè)務(wù)離線查詢需求,在本項目中,Hive與MySQL映射成一張表,通過Sqoop使Hive與MySQL進行數(shù)據(jù)交互,形成以HDFS存儲為主,以MySQL查詢、Hive查詢?yōu)檩o的設(shè)計結(jié)構(gòu)。
結(jié)合面向?qū)ο蟮乃枷?,由于結(jié)構(gòu)化數(shù)據(jù)可看成一個個對象,便可引入JavaWeb作為前后端交互的平臺,通過request發(fā)起查詢信息后,JavaScript調(diào)用Service層,之后Dao層的數(shù)據(jù)傳輸?shù)絊ervice層,以JSO的格式封裝Service的集合數(shù)據(jù)嗎,并傳遞到JSP中,最后JavaScript獲取到JSP中HTML的id,把JSON字符串轉(zhuǎn)化為對象,以Jquery作為中介呈遞數(shù)據(jù)給Echarts進行可視化[6]。
3 安裝及使用
大數(shù)據(jù)集群環(huán)境配置:①電腦配置至少12G運行內(nèi)存;②關(guān)于虛擬機問題:準(zhǔn)備三臺Linux虛擬機,每臺至少分配2G運行內(nèi)存,主節(jié)點至少分配50G磁盤空間,從節(jié)點至少分配30G磁盤空間;③必須考慮各個組件的軟件兼容性;④Tomcat為v7.0版本;⑤在搭建大數(shù)據(jù)集群時,先配置Hadoop,再配置Hive,最后配置Sqoop。
4 項目總結(jié)
在設(shè)計架構(gòu)時,還需要考慮架構(gòu)的延伸和擴展,為此,在JavaWeb端采用MVC模式。采用這個模式后期方便重寫代碼,可采用SSM(Spring+SpringMVC+MyBatis)對整個程序進行解耦,簡化開發(fā)過程,提高開發(fā)效率。當(dāng)然在Hadoop集群也留有擴展的余地,除了使用離線計算的框架外,還可以搭建Spark,加快數(shù)據(jù)處理的速度。
關(guān)于項目的模塊拆分有三大部分,即大數(shù)據(jù)端、Java后端、前端。在開發(fā)過程中,大數(shù)據(jù)模塊最為復(fù)雜,需要協(xié)調(diào)好各個組件的兼容性,并且需要了解一定的分布式概念,還需對數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計算機網(wǎng)絡(luò)、數(shù)據(jù)庫有一定的了解。而Java后端和前端比較簡單,Java只需要專注于業(yè)務(wù)邏輯,前端只需要會使用Echarts可視化框架即可。
在本次項目的制作中,目前還沒有發(fā)揮出全部的功能,在制作時并沒有考慮程序整體的解耦,如果把MySQL換成其他數(shù)據(jù)庫,那么所有的接口將要被重新實現(xiàn),造成了維護不便的問題。
在整個項目設(shè)計的過程中,沒有添加用戶接口,不能獲取用戶的真正需求,整個制作流程到實現(xiàn)也只是處于一個假設(shè)狀態(tài),因此,在制作時只模擬了一個統(tǒng)計崗位數(shù)量的業(yè)務(wù)邏輯。在此項目的基礎(chǔ)上,后續(xù)會不斷改進。
【參考文獻】
【1】王衛(wèi)鋒,楊林.基于Hadoop的郵政寄遞大數(shù)據(jù)分析系統(tǒng)設(shè)計與實現(xiàn)[J].中國科學(xué)院研究生院學(xué)報,2017,34(3):395-400.
【2】楊曉燕.大數(shù)據(jù)下智慧圖書館研究領(lǐng)域的可視化分析[J].河南圖書館學(xué)刊,2020,40(02):94-96.
【3】楊恒,田坤,常亮,等.基于大數(shù)據(jù)分析的可視化預(yù)測性運維系統(tǒng)實現(xiàn)[J].冶金自動化,2020,44(01):44-47+73.
【4】張文斐,陳酌灼,洪梓銘.移動終端應(yīng)用數(shù)據(jù)分析用戶體驗改進技術(shù)[J].信息技術(shù)與信息化,2019(07):34-37.
【5】李曉穎,趙安娜,周曉靜,等.基于大數(shù)據(jù)分析與挖掘平臺的個性化商品推薦研究及應(yīng)用[J].電子測試,2019(12):65-66+81.
【6】陳海拔,顧全,董羊城,等.基于大數(shù)據(jù)的電網(wǎng)調(diào)度控制智能告警系統(tǒng)[J].電子設(shè)計工程,2019,27(11):91-95.