吳婷 胡必波 譚澤榮 肖健
摘? ?要:基于Serverless無服務器架構搭建的知曉云校園導覽小程序,提出了一種Hadoop和Spark統一部署的校園導覽大數據分析設計方案,并對構建該平臺的關鍵技術和步驟進行說明。實踐驗證,相對以往單一Hadoop平臺,文章所構建的混合平臺具有計算資源按需伸縮、集群利用率高、避免數據跨集群遷移等優勢,更適應企業實際使用。
關鍵詞:Hadoop;Spark分布式計算;批處理;流計算
微信小程序是一種輕量級的APP,不需要下載、安裝即可使用[1]。它是一個基于去中心化而存在的平臺,沒有聚合的入口,可以通過搜索、社交分享、掃一掃、微信支付等多種方式進入[2]。
Hadoop是實現了分布并行處理任務的系統框架,主要由Hadoop分布式文件系統(Hadoop Distributed File System,HDFS),MapReduce和Hbase等組成,框架的核心設計是HDFS和MapReduce[3],具有成本低、高性能計算、高擴展性、高容錯性等突出的優勢。Spark是基于內存計算的大數據并行計算框架,主要由Spark Core,Spark Streaming等組成,具有易用性、通用性、運行速度快、運行模式多樣等突出優勢。
為加快校園數字化進程以及方便師生或周邊人士對校園地理環境進行了解,本團隊開發了知曉云校園導覽微信小程序,服務內容涵蓋地理位置、學習與生活導覽,在給用戶帶來方便的同時,也產生了很多用戶訪問量,并積累了很多用戶數據。基于Hadoop構建校園導覽服務大數據分析處理平臺,可以采集、分析和展示導覽數據,深入了解用戶,更好地提供校園導覽服務。
1? ? 技術原理
1.1? 分布式存儲
Hadoop HDFS是對Google GFS的開源實現,支持以流式數據訪問模式來存取超大文件,可活動于廉價服務器集群上。HDFS采用主從結構模型[4],一個HDFS集群包括一個NameNode和若干DataNode。NameNode作為中心服務器,負責管理文件系統的命名空間及客戶端對文件的訪問。DataNode作為單獨節點運行,負責處理文件系統客戶端的讀/寫請求,在NameNode統一調度下進行數據塊的創建、刪除和復制等操作。
1.2? 分布式計算
Hadoop MapReduce是對Google MapReduce的開源實現,支持在HDFS上運行分布式計算模型[5],核心思想是“分而治之,迭代匯總”。MapReduce通過Map運行的任務讀取HDFS中的數據文件,Map函數將小數據集進一步解析成一批
2? ? 系統設計
知曉云是一款基于Serverless無服務器架構的小程序開發工具,在知曉云平臺開發校園導覽微信小程序,可以免去小程序開發中服務器搭建、域名備案、數據接口實現等繁瑣流程,一站式解決校園場館室內外地圖導覽、定位的業務系統搭建難題,同時支持小程序、網頁和APP多平臺互動[6]。知曉云校園導覽系統可分為小程序客戶端、管理后端(知曉云服務端)、第三方支付等3層,作為大數據分析處理平臺的數據來源。
Hadoop雖然已成為大數據技術事實標準,但其本身還存在表達能力有限、磁盤輸入/輸出(Input/Output,IO)開銷大、延遲高等諸多缺陷,最主要的缺陷是MapReduce計算模型延遲過高,無法勝任實時、快速計算的需求,只適應離線批處理的應用場景。Spark分布式計算借鑒了Hadoop MapReduce的優點,將計算數據、中間結果都存儲在內存中,大大減少了I/O開銷,很好地解決了MapReduce所面臨的問題,更適合迭代運算較多的數據挖掘與機器學習運算。
盡管Spark相對于Hadoop而言有較大優勢,但Spark并不能完全替代Hadoop,主要用于替代Hadoop中的MapReduce計算模型。Spark的設計遵循“一個軟件棧滿足不同應用場景”的理念,例如Spark Core應對復雜批處理數據處理(時間跨度數十分鐘到數小時之間)、Spark SQL應對歷史數據的交互式查詢(時間跨度數十秒到數分鐘之間)、Spark Streaming應對實時數據流的數據處理(時間跨度在數百毫秒到數秒之間)等。
一方面,Hadoop生態體系中一些組件所實現的功能,目前Spark還是無法取代。另一方面,基于現有的Hadoop組件開發,完全轉移到Spark上需要一定的成本。考慮到Hadoop MapReduce,Storm和Spark等都可以運行在資源框架之上,在資源協調者(Yet Another Resource Negotiator,YARN)之上進行統一部署可以將不同計算框架統一運行在YARN中,構建校園導覽大數據分析平臺。
3? ? 關鍵步驟
3.1? Hadoop分布式集群搭建
在Hadoop中主要使用深度優先搜索(Depth-First-Search,DFS)進程和另一種YARN進程,需要搭建DFS集群和YARN集群。實現實時流數據計算需要先搭建Zookeeper協調服務集群,解決分布式應用一致性問題,再搭建Kafka集群,實現實時數據流緩存,最后搭建Spark集群,實現數據流分析與處理。
3.2? 數據采集層
本層主要工作是通過Flume,Sqoop,爬蟲抓取(外部數據)等采集樣本數據至HDFS中。以Flume為例,使用Flume日志收集系統監控小程序頁面日志文件,一旦日志文件發生變化,Flume系統就會將變化的數據繼續寫進HDFS中進行存儲。source輸入源完成對日志數據的收集,分成Transition和Event送入到channel之中;channel設置管道主要提供隊列功能,對source中提供的數據進行簡單的緩存;sink輸出源取出channel中的數據寫入HDFS。
3.3? 離線數據分析層
本層主要工作是將數據采集模塊收集到的樣本數據提取出來,進行數據清洗和解析工作,并把處理后的結果存入關系型數據庫中。第一步,提取存儲在HDFS中的數據,通過自定義的數據倉庫技術(Extract Transform Load,ETL)文件將數據按照定義好的數據倉庫模型進行格式化操作,并將清洗后的數據導出到Hadoop的Hbase中或者映射成Hive表。第二步,從Hbase/Hive中提取出上一步整理完的數據,然后將數據經過自定義編寫的MapReduce數據清洗或Hive數據分析進行數據解析計算,最后將分析后的數據Sqoop從HDFS遷移轉換到MySQL數據庫中。
3.4? 實時流數據分析模塊
本層主要工作是將通過數據采集模塊收集到的樣本數據提取出來,經過實時分析處理獲得有價值的信息。第一步,采集樣本數據到Kafka(生產者—消費者設計模式)進行緩存。第二步,Spark Streaming接收Kafka發來的實時數據,實時地進行分析計算,并反饋實時結果。經過Spark Streaming處理后的數據,可視情況進行存儲,以便之后再進行分析計算,如果場景時效性要求較高,處理之后的數據可以直接丟棄。
3.5? 數據展示模塊
本層主要工作是設計平臺展示頁面樣式并進行編寫,將經過解析過程后的日志數據最終結果在平臺頁面上進行圖表展示。離線數據流可使用典型的Web框架把MySQL數據庫中的數據通過ECharts或HighCharts等可視化工具以曲線和分布圖的形式展現出來。與離線數據流不同的是,實時數據流無需用戶主動發出查詢,可以主動將實時結果推送給用戶。
4? ? 結語
經實踐使用驗證,采用Hadoop和Spark的統一部署方案實現了計算資源按需伸縮,不同負載應用混搭不僅提高了集群利用率,而且通過共享底層存儲避免數據跨集群遷移,在企業實際應用中將是一種比較現實合理的選擇。當然,該大數據分析平臺也存在不足,例如Spark Streaming無法實現毫秒級的流計算等,有興趣的讀者可進一步完善,甚至可以結合OpenStack等云管理平臺進一步將其升級為私有云平臺。
[參考文獻[
[1]劉剛.小程序實戰視頻課[M].北京:人民郵電出版社,2018.
[2]劉剛.微信小程序開發圖解案例教程[M].北京:人民郵電出版社,2019.
[3]溫春水.從零開始學Hadoop大數據分析[M].北京:機械工業出版社,2019.
[4]贠佩,晁玉蓉,樊華,等.基于Hadoop的數據分析系統設計[J].數字技術與應用,2019(3):180-182.
[5]鄒立民.基于Hadoop的分布式數據存儲系統應用的研究[D].沈陽:沈陽工業大學,2018.
[6]劉暢.基于無服務器架構的邊緣AI計算平臺[J].信息通信技術,2018(10):45-49.
Construction and application of big data analysis platform for campus guide based on Hadoop
Wu Ting, Hu Bibo, Tan Zerong, Xiao Jian
(Guangzhou College of Technology and Business, Guangzhou 510850, China)
Abstract:Based on “Serverless” serverless architecture of the known cloud campus navigation Mini Programs, this paper proposes a unified Hadoop and Spark campus navigation big data analysis and design scheme, and explains the key technologies and steps to build the platform. Practice verifies that compared with the previous single Hadoop platform, the hybrid platform constructed in this paper has the advantages of scaling computing resources on demand, high utilization of clusters, avoiding data migration across clusters, and so on, which is more suitable for the actual use of enterprises.
Key words:Hadoop; Spark distributed computing; batch processing; flow calculation