?

基于Spark的高校學生移動軌跡管理系統的設計與實現

2022-10-23 12:22丁衛東
信息記錄材料 2022年8期
關鍵詞:數據處理內存軌跡

丁衛東

(德州職業技術學院 山東 德州 254300)

0 引言

隨著互聯網技術和通信技術的迅速發展,手機已經成為人民生活的重要工具,移動位置服務技術越來越趨向成熟,基于位置的信息服務是根據用戶所在的位置提供的一種增值服務,主要通過定位技術獲取用戶當前所在的位置[1]。移動位置服務技術包括兩種方式的定位,即基于移動運營商網的基站定位和基于GPS定位,第一種方式的定位是由基站對手機進行距離測算,從而確定手機位置的。第二種定位實現的方式是利用手機上的GPS定位模塊將定位信息發送到后臺。第一種方式由于精度過度依賴基站的分布及覆蓋范圍,產生的誤差相對較大。而第二種方式定位精度較高,還可以隨時免費調用其接口;目前,挖掘用戶的移動軌跡規律,已經成為大數據領域研究的重要應用。張婷[2]針對移動多媒體應用程序的模塊到達率和用戶行為路徑進行研究,提出面向移動App的用戶行為路徑分析模型;楊海軍等[3]提出了一種基于多用戶訪問模型和多IP模型的信息采集方案;張嘉誠等[4]采用spark獲取了移動用戶軌跡中的價值信息,并且對用戶軌跡數據進行統計和分析。杜勝蘭等[5]實現了對軌跡停留點的信息進行精確提取。吳杰[6]將基于深度信念網絡位置預測模型應用于實踐當中,完成了原型系統的設計與實現。本文通過移動互聯網與Spark相結合,采用Smobiler獲取手機GPS定位信息,設計了一套高校學生移動軌跡管理系統,為高校管理者提供決策支持。

1 Spark平臺

1.1 Spark介紹

Spark是加州伯克利分校AMPLab實驗室開發的通用大數據處理框架[7],用于構建大型的、低延遲的數據分析應用程序,其主要的優點是能夠在內存中進行讀寫計算數據,從而提升計算性能。Spark 有以下優點:

(1)運行速度非??欤簩τ谠趦却嬷械臄祿?,Spark通過其包含的DAG執行引擎進行迭代計算。Spark從磁盤中讀取數據和從內存中讀取數據的速度遠遠高于Hadoop MapReduce的讀取數據速度,分別高于其數十倍或者百倍以上。

(2)容易使用:Spark是通過Scale語言實現的,將Scale語言作為其應用程序的框架。Spark不但支持Scala語言編寫程序,而且支持Python和Java語言編寫的應用程序,特別是Scala是一門多范式、可拓展、高效的編程語言,具備函數式編程特點,寫法簡單,能夠處理復雜的邏輯。

(3)通用性強:Spark提供了非常有吸引力的統一的解決方案,在性能方面具有巨大的優勢,減少了部署平臺的物理成本以及開發、維護等人力成本。它在交互式查詢和批處理方面得到廣泛應用,同時,也在流處理和圖計算方面表現突出。

(4)可融合性:Spark適應性非常的強,非常方便與其他產品進行融合。Spark的資源管理和調度器一般是采用Yarn,它能夠處理HDFS、HBase等Hadoop所支持的數據,Spark并非依賴第三方的資源管理器和調度器,它能夠以自身攜帶的Standalone作為內置資源管理器和調度框架來調度job,從而完成應用程序計算任務,這樣進一步降低了Spark的使用門檻。

1.2 Spark與hadoop的區別

在原理方面,Spark和hadoop都是用MR模型進行并行計算,Hadoop將一個作業稱之為一個Job,Job包括Map任務和Reduce任務兩個階段,每個任務都在自己的進程中運行,進程隨著任務的結束而結束。一個完整的Spark應用包括三個基本步驟,即獲取數據輸入、處理數據、輸出結果。

在數據的存儲和處理方面,Hadoop具有數據存儲功能,它將數據分布存儲在各個計算機的節點上。而Spark因沒有提供文件管理系統,自身沒有數據的存儲功能。

在處理速度方面,Hadoop屬于磁盤級別的計算,從磁盤中讀取數據,處理速度比較慢。而Spark是基于內存的計算,在內存中的數據處理速度高于Hadoop的百倍。

在恢復性方面,Hadoop將每次處理后的數據寫入磁盤中,而以RDD為載體的Spark數據可以放在內存中,同時,也可以放在磁盤中,因此,RDD能夠提供完整的災難恢復功能。

在對中間件結果的處理方面兩者也不同,Hadoop將中間結果存放在分布式文件系統中,每次進行MR的時候都需要刷寫和調用,而Spark將中間結果并非存在HDFS中,首先將中間結果優先存在內存中,當內存不夠使用的時候再將其存放在磁盤中,從而避免了大量的輸入輸出和刷寫讀取操作。

1.3 SparkSQ介紹

SparkSQL是Spark開發組的成員針對關系型數據開發的一套庫軟件,其前身是支持Hadoop的關系型數據庫引擎Shark[8]。為了實現Hive兼容,在HQL方面重用了Hive中HQL的解析、邏輯執行計劃翻譯、執行計劃優化等邏輯,Shark是Spark包含的一個模塊,主要用于處理結構化數據,它提供了一個數據抽象DataFrame,SparkSQL作為分布式SQL查詢引擎,將SQL轉換成一個任務,提交到集群上運行。SparkSQL的基礎數據模型是DataFrame,DataFrame是一個分布式數據集,由“命名列”所組織,其數據來源包含多個,有hive的表、結構化數據文件、RDD、外部數據庫等。SparkSQL使用過程包括以下步驟,首先,利用SqlContext從外部數據源加載數據成為DataFrame的數據格式;其次,利用DataFrame提供的接口進行查詢、轉換;最后,展現和存儲結果。

1.4 Spark設計思想

Spark是彈性分布式的元素集合。與普通的數據集不同的是,RDD中的數據可以分區存儲,從而能夠實現并行化處理數據。因此,對所需要的數據處理之前,Spark首先創建RDD,然后進行Transformation和Action操作計算結果。通常,RDD是緩存在內存中的,父RDD的輸出結果能夠直接作為子RDD的輸入,因此大大提高了迭代計算的效率。

1.4.1 環境說明

本文中的服務器采用Linux系統。搭建的Spark集群采用了實驗室中的四臺虛擬主機、一個主節點、三個從節點組成運行環境。每個節點均采用Centos7系統,并且配置好了完全分布式大數據運行環境。應用程序打成jar包后導入集群環境中采用Spark on yarn的方式運行。具體情況如表1所示。

表1 節點具體說明

1.4.2 軟件安裝

大數據平臺組件采用Java JDK 1.8,Hadoop-2.7.7.tar.gz,Hive2.3.4,Spark2.1.1,MySQL 5.7。Scala語言的安裝包采用scala 2.11。軟件開發工具采用IDEA2019(Community Edition)和VisalStudio2019。在搭建好完全分布式集群后,可啟動Spark分布式集群進行測試。

2 系統的設計與實現

2.1 系統需求分析

目前,智能手機已經成為人們生活中的重要工具,本系統使用Smobiler采集終端數據,利用Spark框架對數據的處理、分析;使用Mysql和H ive對數據進行存儲;采用主流前端框架vue.js,結合echart.js,html5等實現數據的可視化;數據分析模塊的開發采用Scala。系統實現的主要功能如下:

(1)用戶管理。系統包括用戶登錄功能、用戶注冊功能和用戶注銷功能,以實現學生隱私的保護,未注冊的用戶和已注冊未登錄的學生,后臺不顯示其活動軌跡。對于已經登錄的用戶,后臺以可視化的方式展示其活動軌跡、區域停留點。

(2)數據采集功能。使用Smobiler組件采集學生的經緯度、IP地址、時間,并存入關系型數據庫。

(3)數據處理和分析功能。利用Spark集群的SparkSql模塊抽取采集的離線數據存入Hive中,并利用Spark對用戶的冗余數據進行過濾處理,形成新的數據集合。在進行相關性分析、指標計算等操作后將數據存入Mysql中。

(4)數據可視化展示。將數據以圖的形式展示,給用戶直觀感受,為學校管理者提供決策支持。

2.2 系統架構設計

整個系統分為移動終端數據采集層、Spark數據處理和分析層、數據展示層。學生行為軌跡分析總體架構如圖1所示。

(1)數據采集層利用Smobiler,收集學生位置數據,并將數據作為數據分析層的輸入。

(2)數據處理和數據分析層是基于Spark分布式計算平臺進行的。在進行數據分析時,用到的是SparkContex。

(3)數據展示層將分析后的數據以圖形的方式呈現給用戶,如展示熱點圖等。

2.3 系統實現

2.3.1 數據采集層

在獲取學生位置數據的過程中,主要通過具有GPS功能的手機使用Smobiler開發。Smobiler是一款基于.NET的移動應用開發平臺。它實現了跨平臺解放方案,即一次開發,同時運行于Android和IOS兩個平臺。系統采用的測試數據集包括計算信息計算工程系的32個志愿者提供的數據。終端用戶的數據首先采集到關系型數據庫mysql中,本系統建立的數據庫為site_data,其用戶數據的模型定義如表2所示。

表2 用戶數據模型

2.3.2 數據處理和分析層

該層利用Spark框架進行離線數據抽取,把關系型中的數據抽取到HIVE中,目的是通過Spark進行相關的清洗和指標計算。系統首先建立了HIVE分區字段h_time,然后采取動態分區的方式插入hive數據。

在進行數據清洗的時候,主要是進行去重工作,把同一個用戶在一段時間間隔的同一個停留點的重復數據去重,進行指標計算的時候,對近三日出現的數據進行統計。最后把數據再次存入關系型數據庫中,以提供后續的可視化展示。

其關鍵代碼為:

3 系統的測試結果

數據可視化包括熱力圖和志愿者停留點,系統提供日期范圍選擇。圖2展示的是周一某上課時間段學生停留點情況,由圖2可知大部分學生停留在博學樓。

4 結語

如今,互聯網發展已經離不開大數據。大數據技術的發展、成熟不斷地滲透到社會的方方面面,利用大數據技術處理高校的數據也逐漸成為一種趨勢。本文設計了一個基于spark的高校學生移動軌跡大數據處理與可視化平臺,可為高校管理者提供決策幫助。

本文的不足之處是由于地理位置采集的不精確,導致有誤差;在數據采集終端,采用了計時器插件,設置的時間間隔小,導致數據過于冗余;此外,系統也沒有做到實時性。下一步工作的重點是在系統的實時性方面加以改進,如采用Flink解決系統實時性方面的問題。

猜你喜歡
數據處理內存軌跡
解析幾何中的軌跡方程的常用求法
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
基于低頻功率數據處理的負荷分解方法
無人機測繪數據處理關鍵技術及運用
軌跡
軌跡
筆記本內存已經在漲價了,但幅度不大,升級擴容無須等待
“春夏秋冬”的內存
高層建筑沉降監測數據處理中多元回歸分析方法的應用研究
高層建筑沉降監測數據處理中多元回歸分析方法的應用研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合