駱金維 曾德生 潘志宏 劉陪雄
文章編號: 2095-2163(2018)03-0148-07中圖分類號: 文獻(xiàn)標(biāo)志碼: A
摘要: 關(guān)鍵詞: based on big data platform
(1 GuangDong Innovative Technical College, Dongguan Guangdong 523960, China;
2 XINHUA College of sun YAT-SEN University, Guangzhou 510520, China;
3 Guangdong Polytechnic of Environmental Protection Engineering,F(xiàn)oshan Guangdong 528216, China)
Abstract: In the era of big data, the number of data shows geometric level growth. The traditional single server architecture's teaching resource sharing system has been unable to store and process large amounts of data, so it is required to build large data platform for storage processing. The teaching resource sharing system based on big data platform is to build teaching resource sharing system in educational informatization. Its storage capacity is large, and the amount of data processing is large. While users access the teaching resources and real-time count data access to teaching resources, big data platform could be built,which uses Hadoop distributed file storage and achieve real-time access and statistics of teaching resources through spark memory computing, then uses data visualization technology to indicate users access statistics, in order to view the usage of teaching resources in the users. The research provides a strong basis for the future construction of teaching resources.
Key words:
基金項目:
作者簡介:
通訊作者:
收稿日期: 引言
互聯(lián)網(wǎng)技術(shù)不斷發(fā)展,其信息數(shù)據(jù)量正呈現(xiàn)爆炸式增長,信息化技術(shù)已進(jìn)入大數(shù)據(jù)時代。在大數(shù)據(jù)時代對數(shù)據(jù)的存儲與處理要求更高,可利用大數(shù)據(jù)技術(shù)解決傳統(tǒng)的基于單機(jī)服務(wù)器進(jìn)行教學(xué)資源共享時對用戶訪問日志數(shù)據(jù)不能進(jìn)行實時統(tǒng)計分析的問題。當(dāng)用戶點擊教學(xué)資源共享平臺的教學(xué)資源時,后臺Web服務(wù)器會產(chǎn)生一個對應(yīng)訪問日志文件,這個日志文件包含IP地址、訪問用戶名、訪問時間等信息,利用大數(shù)據(jù)技術(shù)對日志記錄文本文件進(jìn)行處理、統(tǒng)計教學(xué)資源訪問使用情況,為資源管理及后續(xù)建設(shè)提供一定的參考。
大數(shù)據(jù)處理技術(shù)是利用服務(wù)器集群的方式解決單臺服務(wù)器處理不了的技術(shù)問題,當(dāng)存儲的數(shù)據(jù)量以及要處理的計算量非常大時,單臺服務(wù)器顯得力不從心,應(yīng)搭建服務(wù)器集群的方式進(jìn)行分布式存儲和計算才能滿足數(shù)據(jù)的存儲及處理。對基于大數(shù)據(jù)平臺的教學(xué)資源共享系統(tǒng)訪問量進(jìn)行實時統(tǒng)計時,需要先搭建Hadoop分布式系統(tǒng)來存儲相關(guān)教學(xué)資源數(shù)據(jù),然后利用Flume收集服務(wù)器中的日志數(shù)據(jù),接著對日志記錄數(shù)據(jù)進(jìn)行清洗并存儲在Hadoop的HDFS文件系統(tǒng)上,再通過Spark技術(shù)對HDFS上的數(shù)據(jù)進(jìn)行實時計算處理,并將計算結(jié)果存儲在HBase中,通過Sqoop把數(shù)據(jù)導(dǎo)出到MySQL等關(guān)系型數(shù)據(jù)庫中,最終通過可視化技術(shù)將統(tǒng)計分析的數(shù)據(jù)以圖形圖像的形式展現(xiàn)給用戶。
1相關(guān)技術(shù)介紹
利用大數(shù)據(jù)技術(shù)實時統(tǒng)計用戶訪問教學(xué)資源情況,先要解決教學(xué)資源數(shù)據(jù)存儲及處理問題,需搭建基于大數(shù)據(jù)的教學(xué)資源共享平臺,通過對用戶訪問教學(xué)資源的日志記錄信息進(jìn)行采集清洗統(tǒng)計處理,了解教學(xué)資源的使用情況,系統(tǒng)設(shè)計實現(xiàn)過程中需要利用如下大數(shù)據(jù)技術(shù)。
1.1Hadoop
Hadoop是大數(shù)據(jù)處理的基本平臺,進(jìn)行離線計算處理的基本工具。其核心技術(shù)包括Hadoop Distributed File System、Hadoop MapReduce、Hadoop Common、Hadoop Yarn 4大模塊?;诖髷?shù)據(jù)平臺的教學(xué)資源共享系統(tǒng)中,用戶訪問教學(xué)資源情況統(tǒng)計充分利用Map-Reduce分布式計算框架及HDFS分布式文件存儲系統(tǒng),其MapReduce分布式模式用戶編寫的程序分成Mapper、Reducer、Driver(提交運(yùn)行mr程序的客戶端)3個部分。Mapper的輸入數(shù)據(jù)及輸出數(shù)據(jù)均是Key—Value對形式。 Mapper中的業(yè)務(wù)邏輯寫在mapper()方法中,mapper()方法(maptask進(jìn)程)對每一個
1.2HBase
HBase非關(guān)系型數(shù)據(jù)庫是基于Google Bigtable實現(xiàn)的開源、分布式、可伸縮的列式存儲數(shù)據(jù)庫,是Hadoop生態(tài)的重要一環(huán)。基于Storm、Spark等框架的數(shù)據(jù)處理方案中也可利用其進(jìn)行數(shù)據(jù)存儲。HBase的結(jié)構(gòu)包括表(table)、行(row)、列族(column family)、列(column)、單元格(cell)、版本(version)等。 一張表中包含若干行, 一行包括一個行鍵(row key)和若干列族,一張表中的行 按照行鍵排序 ,并用行鍵作為索引。 每個列族包含若干個列, 列族需要在建表時預(yù)定義,運(yùn)行期間可以動態(tài)加入新的列 。在物理層面,HBase的數(shù)據(jù)存儲是在列族這一層級進(jìn)行組織,每個列族單獨存儲。 每個列都?xì)w屬于某個列族,以列族名作為前綴,通常使用 列族名 的形式來標(biāo)識一個列。 存儲的每一個值存放在一個單元格中,由 [行,列,版本號] 來唯一指向一個單元格。版本號默認(rèn)是時間戳形式,同一列中可能包含若干單元格,這些單元格由版本號唯一區(qū)分, 根據(jù)版本號降序排列 。HBase架構(gòu)如圖1所示。
1.3Flume
Flume是具有高可用性、高可靠性、分布式海量日志采集、聚合和傳輸?shù)南到y(tǒng)??蓸?gòu)建擴(kuò)展的分布式系統(tǒng)來收集大量數(shù)據(jù)流,把Web服務(wù)器上的數(shù)據(jù)進(jìn)行采集,有基于數(shù)據(jù)流的簡單靈活的體系結(jié)構(gòu)。具有可調(diào)的可靠性機(jī)制和許多故障轉(zhuǎn)移和恢復(fù)機(jī)制,具有健壯性和容錯性。其使用一個簡單的可擴(kuò)展的數(shù)據(jù)模型,允許聯(lián)機(jī)分析應(yīng)用程序。采集日志數(shù)據(jù)流程如圖2所示。
1.4Sqoop
Sqoop是實現(xiàn)數(shù)據(jù)遷移的工具,可實現(xiàn)Hadoop上的HDFS數(shù)據(jù)和關(guān)系數(shù)據(jù)庫服務(wù)器之間進(jìn)行傳輸數(shù)據(jù),可以將MySQL、Oracle等關(guān)系型數(shù)據(jù)導(dǎo)入到Hadoop的HDFS、Hive、HBase等數(shù)據(jù)存儲系統(tǒng)中;亦可以將Hadoop的分布式文件系統(tǒng)HDFS中的數(shù)據(jù)導(dǎo)出到關(guān)系數(shù)據(jù)庫中。將導(dǎo)入或?qū)С雒罘g成mapreduce程序進(jìn)行實現(xiàn),在翻譯出的mapreduce中主要是對inputformat和outputformat進(jìn)行定制。Sqoop導(dǎo)入導(dǎo)出流程如圖3所示。
1.5Hive
Hive是基于Hadoop的一個數(shù)據(jù)倉庫,可將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表。提供簡單的SQL查詢功能,管理存儲在分布式系統(tǒng)上的數(shù)據(jù)集??蓪QL語句轉(zhuǎn)換成MapReduce作業(yè)程序進(jìn)行運(yùn)行,通過類SQL語句快速實現(xiàn)MapReduce統(tǒng)計。其適合數(shù)據(jù)倉庫的統(tǒng)計分析,Hive的體系結(jié)構(gòu)如圖4所示。
1.6Spark
Spark是一種大數(shù)據(jù)計算框架,類似于Hadoop的MapReduce,是通用的大數(shù)據(jù)快速處理引擎,使用一個技術(shù)堆棧解決大數(shù)據(jù)領(lǐng)域的一些計算任務(wù)。在內(nèi)存中處理及運(yùn)行速度較快,但不具有文件管理功能。Spark最主要的核心技術(shù)是Resilient Distributed Datasets 即彈性分布式數(shù)據(jù)集,對數(shù)據(jù)的操作轉(zhuǎn)換成為RDD的操作。Spark由Spark RDD、Spark SQL、Spark Streaming、MLlib、GraphX等組成,解決大數(shù)據(jù)領(lǐng)域中離線批處理、交互式查詢、實時流計算、機(jī)器學(xué)習(xí)與圖計算等任務(wù)和問題。Spark 整體架構(gòu)如圖5所示。行Spark核心編程時先要創(chuàng)建一個代表和包含了Spark應(yīng)用程序的輸入源數(shù)據(jù)的RDD,在創(chuàng)建了初始的RDD之后,才可以通過Spark Core提供的transformation算子對該RDD進(jìn)行轉(zhuǎn)換,來獲取其它RDD。Spark Core提供了使用程序中的集合創(chuàng)建RDD、本地文件創(chuàng)建RDD、HDFS文件系統(tǒng)創(chuàng)建RDD的方式。
Spark Streaming是一種Spark提供的對于大數(shù)據(jù)進(jìn)行實時計算的一種框架,是Spark Core API的一種擴(kuò)展,用于進(jìn)行大規(guī)模、高吞吐量、容錯的實時數(shù)據(jù)流的處理。支持從Kafka、Flume、Twitter、ZeroMQ、Kinesis、TCP Socket等多種數(shù)據(jù)源中讀取數(shù)據(jù),使用類似高階函數(shù)的復(fù)雜算法來進(jìn)行數(shù)據(jù)處理。例如map、reduce、join和window,處理后的數(shù)據(jù)可以被保存到文件系統(tǒng)、數(shù)據(jù)庫等存儲中。處理過程如圖6所示。
Spark Streaming基本工作原理如下:接收實時輸入數(shù)據(jù)流,將數(shù)據(jù)拆分成多個batch,每收集1秒的數(shù)據(jù)封裝為一個batch,將每個batch交給Spark的計算引擎進(jìn)行處理,最后會生產(chǎn)出一個結(jié)果數(shù)據(jù)流。其工作原理如圖7所示。
Spark SQL支持對Hive中存儲的數(shù)據(jù)進(jìn)行讀寫,操作Hive中的數(shù)據(jù)時,必須創(chuàng)建HiveContext,而不是SQLContext。HiveContext繼承自SQLContext,但是增加了在Hive元數(shù)據(jù)庫中查找表,以及用HiveQL語法編寫SQL的功能。除了sql()方法,HiveContext還提供了hql()方法,從而用Hive語法來編譯sql。使用HiveContext,可以執(zhí)行Hive的大部分功能,包括創(chuàng)建表、向表中導(dǎo)入數(shù)據(jù)以及用SQL語句查詢表中的數(shù)據(jù)。
1.7Azkaban
Azkaban是應(yīng)用于Hadoop生態(tài)圈的任務(wù)調(diào)度器,可以調(diào)度linux命令及mapreduce、spark、pig、java、hive程序、腳本工作流等任務(wù)。簡單的任務(wù)調(diào)度可直接使用linux的crontab來定義,而復(fù)雜的任務(wù)調(diào)度,需要開發(fā)調(diào)度平臺或使用原有的開源調(diào)度系統(tǒng)。 Azkaban是用來做Hadoop相關(guān)任務(wù)調(diào)度的調(diào)度器,主要由web server、executor server、mysql三個關(guān)鍵部件組成。在一個工作流內(nèi)以一個特定的順序運(yùn)行一組工作流程。Azkaban使用job配置文件建立任務(wù)之間的依賴關(guān)系,并提供易于使用的web用戶界面維護(hù)和跟蹤的工作流。Azkaban組成結(jié)構(gòu)如圖8所示。
1.8數(shù)據(jù)可視化技術(shù)
數(shù)據(jù)可視化技術(shù)是利用計算機(jī)圖形學(xué)和圖像處理技術(shù),將數(shù)據(jù)轉(zhuǎn)換成圖形或圖像在屏幕上顯示出來,并進(jìn)行交互處理的理論、方法和技術(shù)。為便于查看用戶訪問教學(xué)資源情況,利用數(shù)據(jù)可視化技術(shù)將統(tǒng)計結(jié)果以圖表的方式顯示出來,圖表比數(shù)據(jù)表更有表現(xiàn)力,更直觀形象容易理解,以便于進(jìn)行分析。并利用大數(shù)據(jù)可視化技術(shù)將統(tǒng)計的結(jié)果以圖形圖像的方式展現(xiàn)出來,如使用Echart等圖形可視化技術(shù)構(gòu)建靜態(tài)的HTML頁面進(jìn)行顯示。
2系統(tǒng)分析
基于大數(shù)據(jù)平臺的教學(xué)資源共享系統(tǒng)訪問量實時統(tǒng)計主要是當(dāng)用戶點擊教學(xué)資源共享平臺的教學(xué)資源時,后臺服務(wù)器會產(chǎn)生一個日志信息,記錄用戶訪問日志的行為。這個日志信息包含IP地址、用戶名、訪問時間、訪問的模塊、地址使用的方式等信息。通過日志信息進(jìn)行采集整理,可以得到網(wǎng)站頁面的訪問量、網(wǎng)站的黏性。對用戶訪問網(wǎng)站行為進(jìn)行分析,獲得網(wǎng)站訪問量基本數(shù)據(jù),對有關(guān)數(shù)據(jù)進(jìn)行統(tǒng)計、分析,從中發(fā)現(xiàn)用戶訪問網(wǎng)站的規(guī)律,并將這些規(guī)律與今后教學(xué)資源建設(shè)等相結(jié)合,從而發(fā)現(xiàn)教學(xué)資源的使用情況,被用戶接受程度,用戶訪問的時間等情況。系統(tǒng)結(jié)構(gòu)如圖9所示。
對用戶行為日志數(shù)據(jù)分析有利于對教學(xué)資源平臺建設(shè)的使用程度進(jìn)行考量,為今后的教學(xué)資源建設(shè)提供參考借鑒意義。用戶行為日志數(shù)據(jù)分析包含以下內(nèi)容:用戶的來源地區(qū)、來路域名和頁面、 用戶在網(wǎng)站的停留時間、跳出率、回訪者、新訪問者、回訪次數(shù)、回訪相隔天數(shù)、 注冊用戶和非注冊用戶,分析兩者之間的瀏覽習(xí)慣、用戶所使用的搜索引擎、關(guān)鍵詞、關(guān)聯(lián)關(guān)鍵詞和站內(nèi)關(guān)鍵字、用戶選擇的入口形式(廣告或者網(wǎng)站入口鏈接)、用戶訪問網(wǎng)站流程、 用戶在頁面上的網(wǎng)頁熱點圖分布數(shù)據(jù)、網(wǎng)頁覆蓋圖數(shù)據(jù)、用戶在不同時段的訪問量、用戶對于網(wǎng)站的字體顏色的喜好程度等進(jìn)行分析。通過對用戶行為日志數(shù)據(jù)的分析,可以讓資源管理者更加詳細(xì)、清楚地了解用戶的行為習(xí)慣,從而找出共享平臺、課程資源、教學(xué)資源存在的問題,有助于教學(xué)資源建設(shè)改進(jìn)提高。系統(tǒng)組件結(jié)構(gòu)如圖10所示。
3系統(tǒng)設(shè)計
基于大數(shù)據(jù)平臺的教學(xué)資源共享系統(tǒng)是在基于Hadoop平臺上建立的課程教學(xué)資源共享平臺,其系統(tǒng)層次架構(gòu)設(shè)計主要有終端接入層(pc機(jī)、筆記本、瘦終端、平板電腦、智能手機(jī)等終端設(shè)備);業(yè)務(wù)應(yīng)用層(課程資源存儲、課程資源搜索、課程資源推薦、以及用戶訪問教學(xué)資源統(tǒng)計)。其中底層架構(gòu)的硬件平臺主要用虛擬化技術(shù)對服務(wù)器硬件進(jìn)行虛擬化,將一臺物理服務(wù)器虛擬抽象為若干邏輯計算機(jī)、計算、存儲、網(wǎng)絡(luò)等資源脫離真實的環(huán)境而在虛擬環(huán)境下運(yùn)行。在同一臺服務(wù)器上實現(xiàn)同時運(yùn)行多臺邏輯計算機(jī),每臺邏輯計算機(jī)可獨立運(yùn)行完全不同的操作系統(tǒng),有效的隔離資源,提高計算機(jī)工作效率。
業(yè)務(wù)應(yīng)用層中的用戶訪問教學(xué)資源統(tǒng)計業(yè)務(wù)是在虛擬化硬件基礎(chǔ)上安裝搭建Hadoop分布式文件系統(tǒng),部署安裝Hive、HBase、Flume、Azkaban、 Sqoop、MySQL、Spark等軟件系統(tǒng)。當(dāng)用戶點擊共享平臺中的教學(xué)資源時,通過socket或者h(yuǎn)ttp協(xié)議傳輸數(shù)據(jù)到Web服務(wù)器,Web服務(wù)器apache、Nginx、Tomcat等接收到信息后會在相應(yīng)的目錄下產(chǎn)生日志記錄數(shù)據(jù);使用linux系統(tǒng)的定時系統(tǒng)或開發(fā)程序和腳本對日志記錄數(shù)據(jù)進(jìn)行初步處理;Flume監(jiān)控目錄,當(dāng)受監(jiān)控的目錄有變化時,F(xiàn)lume進(jìn)行日志記錄數(shù)據(jù)采集處理,然后交給Hadoop的HDFS文件系統(tǒng)或Hive數(shù)據(jù)倉庫。然后通過SparkStreaming實時流處理,對關(guān)鍵信息字段進(jìn)行分類統(tǒng)計。系統(tǒng)數(shù)據(jù)處理過程如圖11所示。
日志數(shù)據(jù)采集清洗整理后,需要編寫MapReduce程序來過濾數(shù)據(jù),并將相關(guān)數(shù)據(jù)存儲在Hadoop的HDFS文件系統(tǒng)中。使用Hive對每時、每天、每月訪問教學(xué)資源數(shù)據(jù)進(jìn)行統(tǒng)計,Hive 數(shù)據(jù)和Hive通過腳本進(jìn)行綁定,然后通過Sqoop將Hive的分析結(jié)果數(shù)據(jù)導(dǎo)入MySQL數(shù)據(jù)庫 ,最后通過JavaWeb展現(xiàn)頁面,整個處理過程可以通過搭建Azkaban服務(wù)器來進(jìn)行統(tǒng)一調(diào)度管理。
4系統(tǒng)實現(xiàn)
基于大數(shù)據(jù)平臺的教學(xué)資源共享系統(tǒng)由多臺服務(wù)器支持。其中6臺服務(wù)器組合成一個Hadoop集群并安裝Spark;3臺安裝Zookeeper;3臺安裝Flume;3臺服務(wù)器安裝HBase;3臺服器組成一個Web服務(wù)器集群;2臺服務(wù)器組成一個查詢接品服務(wù)器和前端展示服務(wù)器集群。系統(tǒng)間數(shù)據(jù)處理流程如圖12所示。
一個完整的日志數(shù)據(jù)統(tǒng)計分析系統(tǒng)通常都是由大量任務(wù)單元組成的,分布式處理技術(shù)是將大的計算任務(wù)分配給集群中的各個計算節(jié)點進(jìn)行計算,完成計算任務(wù)后再進(jìn)行合并?;诖髷?shù)據(jù)平臺的教學(xué)資源共享系統(tǒng)用戶訪問教學(xué)資源實時統(tǒng)計時數(shù)據(jù)源是從linux系統(tǒng)服務(wù)器shell腳本程序開始運(yùn)行,設(shè)置crontab程序?qū)崿F(xiàn)將日志數(shù)據(jù)實時傳遞Flume服務(wù),通過Hadoop先將原始數(shù)據(jù)同步到HDFS上;借助MapReduce計算框架對原始數(shù)據(jù)進(jìn)行轉(zhuǎn)換,生成的數(shù)據(jù)以分區(qū)表的形式存儲到多張Hive表中;需要對Hive中多個表的數(shù)據(jù)進(jìn)行JOIN處理,得到一個明細(xì)數(shù)據(jù)Hive大表;將明細(xì)數(shù)據(jù)進(jìn)行復(fù)雜的統(tǒng)計分析,得到結(jié)果報表信息;然后將數(shù)據(jù)通過Sqoop導(dǎo)入到關(guān)系型數(shù)據(jù)庫MySQL 中,再利用可視化工具把數(shù)據(jù)庫中的數(shù)據(jù)以圖形的方式展現(xiàn)出來。以下是實現(xiàn)對用戶訪問教學(xué)資源系統(tǒng)實時訪問統(tǒng)計的部分程序代碼。
(1)使用spark-streaming完成數(shù)據(jù)清洗操作
object DataUtils {
val YYYYMMDDHHMMSS_FORMAT=
FastDateFormat.getInstance("yyyy-MM-dd
HH:mm:ss");
val TARGE_FORMAT = FastDateFormat.
getInstance("yyyyMMdd");
def getTime(time: String)={
YYYYMMDDHHMMSS_FORMAT.parse(time).getTime
}
def parseToMinute(time:String)={
TARGE_FORMAT.format(new Date(getTime(time)))
}
def main(args: Array[String]): Unit = {
println(parseToMinute("2017-11-22 01:20:20"))
}
}
(2)針對數(shù)據(jù)進(jìn)行分析,清洗數(shù)據(jù),過濾出無用數(shù)據(jù)
val cleanData = logs.map(line =>{
val infos = line.split("\\t")
val url = infos(2).split(" ")(1)
var categaryId = 0
if(url.startsWith("/www")){
categaryId = url.split("/")(2).toInt
}
ClickLog(infos(0),DataUtils.parseToMin(infos(1)),categaryId,infos(4).toInt,infos(3))
}).filter(clickLog=>clickLog.categaryId!=0)
cleanData.print()
(3)保存收集數(shù)據(jù)到HBase 數(shù)據(jù)庫
cleanLog.map(log=>{
(log.time.substring(0,8)+"_"+log.categaryId,1)
}).reduceByKey(_+_).foreachRDD(rdd=>{
rdd.foreachPartition(partriosRdds=>{
val list = new ListBuffer[CategaryClickCount]
partriosRdds.foreach(pair=>{
list.append(CategaryClickCount(pair._1,pair._2))
})
CategaryClickCountDAO.save(list)
})
})
(4)利用Spark進(jìn)行日志數(shù)據(jù)分割業(yè)務(wù)功能實現(xiàn)(部分代碼)
cleanLog.map(log=>{
val referer = log.refer.replace("http://","/")
val splits = referer.split("/")
var host = ""
if(splits.length > 2){
host = splits(1)
}
(host,log.categaryId,log.time)
}).filter(_._1!="").map(x =>{
(x._3.substring(0,8)+"_"+x._1+"_"+x._2,1)
}).reduceByKey(_+_).foreachRDD(rdd=>{
rdd.foreachPartition(partitionRecods=>{
val list = new ListBuffer[CategarySearchClickCount]
partitionRecods.foreach(pair=>{
list.append(CategarySearchClickCount(pair._1,pair._2))
})
CategarySearchClickCountDAO.save(list)
})
})
(5)通頁面調(diào)用數(shù)據(jù)展示(數(shù)據(jù)可視化部分代碼)
data: (function () {
var datas = [];
$.ajax({
type: "POST",
url: "/sparkweb/CategoryClickCount",
dataType: 'json',
async: false,
success: function (result) {
for (var i = 0; i < result.length; i++) {
{value: 335,
name: '直接訪問'}
datas.push({"value": result[i].value, "name":result[i].name})
}
}
})
return datas;
})()
5結(jié)束語
基于大數(shù)據(jù)平臺的教學(xué)資源共享系統(tǒng)用戶訪問量比較大,日志文件數(shù)量多,計算處理統(tǒng)計日志文件其任務(wù)量重,將Hadoop與Spark進(jìn)行融合。通過Spark Streaming對大數(shù)據(jù)進(jìn)行實時計算,有效提高統(tǒng)計效率,達(dá)到實時計算效應(yīng)。搭建基層Hadooop大數(shù)據(jù)分布式文件存儲平臺,以供數(shù)據(jù)存儲服務(wù)。通過linux系統(tǒng)的Crontab來調(diào)度日志文件,供Flume進(jìn)行采集,由Spark Streaming對數(shù)據(jù)進(jìn)行處理統(tǒng)計,統(tǒng)計用戶訪問量以及資源利用率等指標(biāo),將相關(guān)的數(shù)據(jù)存儲在數(shù)據(jù)庫服務(wù)器中,前端頁面將通過調(diào)用Echar等圖表工具對數(shù)據(jù)進(jìn)行可視化展示。
參考文獻(xiàn)
[1] 馮興杰. Hadoop與Spark應(yīng)用場景研究 [J/OL]. 計算機(jī)應(yīng)用研究,2018,35(9).[2017-10-10].http://www.arocmage.com/article/02-2018-09-065.html.
[2] 李博. 基于Hadoop的超市數(shù)據(jù)分析系統(tǒng)的設(shè)計[J]. 武漢輕工大學(xué)學(xué)報,2015,34(4)35-39.
[3] 郝增勇. 基于Hadoop用戶行為分析系統(tǒng)設(shè)計與實現(xiàn)[D]. 北京:北京交通大學(xué),2014.
[4] 李爽. 基于Spark的數(shù)據(jù)處理分析系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京:北京交通大學(xué),2015.