劉引濤
(陜西工業職業技術學院,陜西 咸陽 712000)
由于“互聯網+”的飛速發展,移動互聯網在線學習平臺成為一種新型學習方式,教育信息化開啟了互聯網在線學習的信息化[1],催生了各種在線學習平臺的普及與應用,因此需要一種新技術解決消息請求響應,實時交叉、吞吐等過程中數據不完整的問題[2]。
在數據處理方式上,一般開發平臺會選擇Batch或Storm模型。傳統的Batch形式已無法完全滿足多途徑多部門管理的數據處理,尤其是在對各業的務數據的獲取和分析上,目前需要一種實時分析的數據處理方法,而Storm對實時流數據的處理具有實時性、可靠性、完整性及可擴展性的優勢;對于大數據分析平臺而言,技術選擇一般使用Spark-streaming,部分技術實力雄厚的公司會進行專門程序的開發與信息處理。平臺開發主要是對業務需求的實現,而對于實時數據引用的穩定性、數據和信息的共享性及分析處理系統無法達到統一。從系統開發的穩定性和成熟度出發,選擇Storm作為實時平臺的開發數據處理方案是一種較為理想的做法。本文的研究探索主要將Storm技術應用于移動互聯網在線學習平臺,可促進該系統的優化改進。
移動互聯在線學習平臺在“互聯網+”背景下得到了快速響應與發展,并在教育教學中得到了推廣與應用,因學習平臺在運行過程中會產生大量數據,如學習者登錄學習平臺后點擊的文檔、視頻、音頻會讓平臺在任意時間面臨多種數據查詢的請求,該運行數據具有類型多樣、規模繁雜等特點,傳統的分散性業務系統與平臺已難以滿足當前移動互聯網大數據平臺的要求[3]。
移動互聯網在線學習平臺的數據來源主要是學習者學習、瀏覽、討論、留言、答疑、測試等全部學習活動的記錄軌跡,并將活動記錄傳遞到學習功能服務器。由功能服務器收集、計算、處理、存儲學習者的學習情況。學習功能服務器通過使用Storm對實時數據進行快速清洗、格式轉換、數據分析,設計實現可降低請求響應時間,解決數據庫因連接限制而丟失數據的問題。重點在于集成多種數據,分析挖掘數據的可視化等方面。
數據讀取、處理環節主要通過Storm的Topology編程模型中的Spout組件和Bolt組件完成,其中Spout組件主要完成數據讀取,Bolt組件主要完成任務處理,使用Topology編程模型的目的在于降低處理延遲[4-5]。
在線學習平臺為學習者提供了專屬的學習環境,學習者可多終端學習,授課教師、助教、企業導師等完成學習討論,通過隨堂練習及時檢驗學習成果。
移動互聯網在線學習平臺要應對突發的大數據量請求,提出數據源、大數據平臺和業務應用三層數據處理結構,根據數據來源不同,將數據分為內部和外部兩種,在線學習平臺的內部數據主要來源于后臺管理平臺、課程管理平臺和資源管理系統平臺,外部數據主要來源于創建者的專屬課程搭建平臺、在線學習系統平臺和互動管理平臺[6]。
在線學習平臺的優化架構中每個模塊的功能實現主要通過Memcached,Flume,Storm,Kafka技術實現數據收集、數據緩沖、數據處理與數據存儲[7]。這里將優化方案應用到網絡學習平臺中進行分析對比,對總體架構的環境進行搭建和部署。學習者通過課程學習、討論、測試等形成數據流,由互動管理實現多維度統計,并通過Storm架構進行流數據處理。在線學習平臺大數據框架如圖1所示。

圖1 在線學習平臺構架
Storm架構采用一個主進程和多個從進程的主從架構模式,對該進程配置時,主要依靠ZooKeeper進程完成主進程和多個從進程之間的協調,需將ZooKeeper進程同時配置到集群的每個節點上。ZooKeeper進程主要保證各服務器之間的流數據同步。ZooKeeper角色分析見表1所列。

表1 ZooKeeper角色分析一覽表
運用Storm完成數據的接收與邏輯運算,Storm在進行數據處理時主要通過Spout讀取逐條記錄,并通過Bolt1對不符合要求的數據進行篩查,Bolt2將統計結果存儲或更新至數據庫,拓撲Topology完成數據處理。在集群狀態下,運用ZooKeeper進程保證數據的完整性和一致性。
通過安裝Storm系統依賴包與工具包,在若干個節點機構集群上搭建Storm開發環境,依賴安裝包主要包括python,jdk,gcc_c++,libuuid,uuid,libtool,libuuid-devel等;在安裝所需工具上使用ZooKeeper封裝關鍵服務,防止協調系統出錯,將簡單易用、性能高效、穩定的接口提供給用戶;使用ZerMQ屏蔽網絡編程,安裝ZerMQ用于處理一個消息隊列,實現多個線程、內核和主機盒之間的靈活伸縮[8]。
Storm主要實現主程序設計,可方便在任一計算機集群中編寫與擴展復雜的實時計算,保證每個消息都能被及時處理并集中在一個小集群中,實現每秒處理百萬消息。
環境搭建主要步驟(以4個集群為例):
步驟一:修改文件用戶屬性:#chow -r root:root/home/local/storm
步驟二:編輯prof i le文件:# vi/etc/prof i le
Export storm_home=/home/local/storm
Export PATH=$PATH:$STORM_HOME/bin;
步驟三:修改環境變量:#source/etc/prof i le;
步驟四:修改storm參數:# vi/home/local/ storm/conf/storm.yaml
步驟五:添加如下內容:
Storm.zookeeper.servers:
-“node1”
-“node2”
-“node3”
-“node4”
Nimbus.host:“node1”
Storm. Local.dir:” home/local/ storm/temp”
Storm.zookeeper.port:2181
Supervisor.slots.ports:
-6700
-6701
-6702
-6703
步驟六:新建temp:#mkdir/home/local/storm/temp
Storm開發環境需要在若干個節點機上分別安裝相同的工具包,可從node1節點機上復制軟件到其他節點機上,并分別修改環境變量和配置文件,主要通過如下兩個步驟實現:
(1)使用scp-r復制文件到其他節點機上(# scp-r /home/local root@node n :/home/local);
(2)分別登錄節點機修改環境變量,環境變量生效(#source/ect/prof i le)后根據zoo.cfg中server.id的ID值修改各節點機ZooKeeper_home/data/myid的內容。
移動互聯在線學習平臺中的流數據處理是對在線學習平臺的管理、運行、監控過程中產生的實時數據流提供有效數據的一種處理機制。筆者選擇Storm作為計算系統,該系統具備高效的數據實時分析功能[9]。在線課程平臺流數據處理架構如圖2所示。
系統從數據來源、Storm計算平臺及流處理三個環節入手,分析在線學習平臺中所獲取、處理及存儲的數據。系統在完成數據收集及預處理后,將收集的完整、正確的數據提供給實時應用系統,并將不完整的數據處理成為標準化數據,通過業務邏輯對數據進行分析,最后將處理結果存儲在數據庫中。

圖2 在線課程平臺流數據處理架構
數據存儲主要采用關系型數據庫存儲數據,在關系型數據庫前加上Memcached暫存數據,保證數據連接池中數據的完整性并解決數據存儲和處理速度不一致問題,所有存儲過程由Storm中的Bolt組件完成[10]。為保證數據的完整性和一致性,系統運用ZooKeeper的鎖機制來解決這一問題。
解決方法的核心代碼如下:
interprocessMuter lock=
new interprocessMutex(LockCuratorSrc.getCF(),Constant.
LOCKS_ORDER);
try{while(lock.acquire(5,timeUnit.Minutes))
BREAK;
LOCK.RELEASE();
在移動互聯在線學習平臺開發應用的背景下,通過對學習者行為數據的深入研究,在線學習系統服務的大數據平臺管理成為一種發展新趨勢。在理論研究的基礎上,根據在線學習平臺的特點及需求,提出大數據平臺架構,針對在線學習平臺的流數據處理,將流數據處理技術Storm與在線學習平臺開發相結合,提出實時數據的處理方案。