趙 亮,陳志奎
(大連理工大學(xué) 軟件學(xué)院,遼寧 大連 116620)
為了提升大數(shù)據(jù)專業(yè)方向?qū)W生的學(xué)習(xí)實踐能力,我校軟件學(xué)院大數(shù)據(jù)研究所開發(fā)了一套大數(shù)據(jù)算法庫教學(xué)實驗平臺。該平臺基于Hadoop 分布式處理框架,著重打造一套適用于多用戶、高并發(fā)場景的大數(shù)據(jù)通用分析處理解決方案,實現(xiàn)適應(yīng)復(fù)雜大數(shù)據(jù)處理和計算需求的數(shù)據(jù)分析和挖掘體系,構(gòu)建魯棒、高效的數(shù)據(jù)服務(wù)平臺。此外,在此平臺基礎(chǔ)上,構(gòu)建了針對土地數(shù)據(jù)的教學(xué)實踐案例,致力于實現(xiàn)對土地文本數(shù)據(jù)的搜索及對土地不完整信息的預(yù)處理和分析。為了使用戶能夠友好地操作Hadoop 集群進行大數(shù)據(jù)處理分析,平臺進一步實現(xiàn)了Web 界面化交互操作,提升了用戶的使用體驗。此平臺的有效利用,能夠為學(xué)生提供有效的數(shù)據(jù)分析實驗、實踐資源,提高大數(shù)據(jù)專業(yè)方向的整體教學(xué)水平[1-2]。
平臺實現(xiàn)的整體目標是為大數(shù)據(jù)專業(yè)方向的教學(xué)和實驗提供有效的數(shù)據(jù)分析處理平臺,具體目標如下:
(1)平臺利用HDFS 完成數(shù)據(jù)的存儲。HDFS 是Hadoop 系統(tǒng)中的分布式文件系統(tǒng),可以對海量數(shù)據(jù)進行管理和存儲,是平臺實現(xiàn)的基礎(chǔ)要素。
(2)平臺實現(xiàn)海量數(shù)據(jù)算法的工具包Mahout,能夠把傳統(tǒng)數(shù)據(jù)挖掘中的算法有效遷移到平臺上,完成海量數(shù)據(jù)的分析處理。
(3)平臺利用SSM 框架建設(shè)平臺前端交互界面,實現(xiàn)完全圖形化操作。此外,前端實現(xiàn)結(jié)合JSTL 技術(shù),完成前后端代碼邏輯的有效分離,使平臺整體層次更加清晰。
(4)平臺通過SSH 協(xié)議,建立平臺前端網(wǎng)站與后臺集群的連接。在終端用戶使用平臺時,需要先上傳Input 文件到HDFS 中。利用SSH 中的數(shù)據(jù)壓縮機制可以有效控制數(shù)據(jù)傳輸?shù)拇笮?,提升效率?/p>
(5)在平臺土地數(shù)據(jù)案例應(yīng)用中,利用Solr 索引技術(shù)組織索引土地文本,完成搜索挖掘,能夠?qū)崿F(xiàn)不同粒度詞匯的檢索。
(6)針對獲取的土地數(shù)據(jù)中存在的不完整內(nèi)容,設(shè)計不同的數(shù)據(jù)質(zhì)量提升預(yù)處理模型,進而對數(shù)據(jù)內(nèi)容進行跨平臺調(diào)用。
(7)平臺基于Hadoop 實現(xiàn)不同外圍接口,實現(xiàn)自定義算法功能。用戶可以提交自己設(shè)計的算法包到平臺上,然后通過平臺調(diào)用Hadoop 集群進行運行。
(8)在Hadoop 集群中執(zhí)行具體算法的同時,希望能夠在前端頁面實時輸出結(jié)果,提升用戶體驗。
(9)平臺實現(xiàn)需要實現(xiàn)對集群實例的遠程操控,包括對特定節(jié)點的操控,以及利用VNC 技術(shù)通過Web界面實現(xiàn)界面的可視化操作。
(10)為了提升整個平臺的并發(fā)性能,平臺實現(xiàn)部分模塊讀寫分離。平臺運用Redis 進行系統(tǒng)數(shù)據(jù)緩存,所有用戶請求均落在Redis 上。為了有效保證Redis和MySQL 中數(shù)據(jù)的一致性,使用Canal 進行功能同步,完成系統(tǒng)解耦。
根據(jù)前一節(jié)的具體設(shè)計目標,本節(jié)對基于Hadoop的大數(shù)據(jù)算法庫教學(xué)實驗平臺進行功能細化,保證平臺設(shè)計的合理性和有效性。圖1 給出了整個平臺的用例圖。
圖1 平臺用例圖
1.2.1 海量數(shù)據(jù)存儲管理
本實驗平臺設(shè)計主要面向海量數(shù)據(jù),因此需要解決海量數(shù)據(jù)的分割和存儲問題。Hadoop 自帶的HDFS分布式文件系統(tǒng)可以有效調(diào)用集群中的節(jié)點來存儲數(shù)據(jù),但是用戶不能直接對集群進行操作,只能與網(wǎng)站后臺服務(wù)器進行交互。所以本實驗平臺需要實現(xiàn)數(shù)據(jù)的上傳功能,以及網(wǎng)站服務(wù)器與后臺集群文件系統(tǒng)間的數(shù)據(jù)傳輸。此外,平臺需要實現(xiàn)用戶間的邏輯分析,限制用戶訪問和操作數(shù)據(jù)的權(quán)限,保證平臺數(shù)據(jù)的有效性和安全性[3]。
1.2.2 傳統(tǒng)機器學(xué)習(xí)算法遷移
傳統(tǒng)的數(shù)據(jù)挖掘和機器學(xué)習(xí)方法能夠解決用戶的大多數(shù)數(shù)據(jù)處理需求,但是現(xiàn)有算法設(shè)計大多面向小數(shù)據(jù)樣本,直接用其處理海量數(shù)據(jù),效率非常低。因此,本平臺針對具體算法結(jié)構(gòu),對其進行有效轉(zhuǎn)換,使其能夠遷移和應(yīng)用于海量數(shù)據(jù)處理,并通過前端界面實現(xiàn)算法的可視化操作。
1.2.3 算法自定義
平臺除了具有傳統(tǒng)機器學(xué)習(xí)算法功能外,還支持算法自定義功能,用于設(shè)計面向具體數(shù)據(jù)處理的用戶算法。在算法具體實現(xiàn)時,只需要上傳符合Hadoop規(guī)范的程序文件,然后平臺后臺對程序進行正確性驗證,并將其加入到算法列表中。默認情況下,每個用戶僅能對自己的算法列表中的算法進行操作,不支持用戶間的算法共享。
1.2.4 不完整數(shù)據(jù)填充
平臺除了具有基礎(chǔ)數(shù)據(jù)處理算法功能外,還支撐面向土地數(shù)據(jù)的應(yīng)用算法。在土地數(shù)據(jù)的采集和獲取過程中,由于采集設(shè)備、傳輸網(wǎng)絡(luò)和人為因素等,可能存在部分數(shù)據(jù)屬性值缺失。針對土地數(shù)據(jù)的不完整性,設(shè)計了面向缺失值填充的數(shù)據(jù)預(yù)處理算法,提升數(shù)據(jù)的可計算性。
1.2.5 集群實例管理
支持對集群平臺中單個處理節(jié)點的信息查詢、管理和Web 界面化交互操作。使用戶更加友好、便捷地管理實驗平臺,使個性化數(shù)據(jù)應(yīng)用得以實現(xiàn)。
本平臺中主要包含用戶在表單中輸入的數(shù)據(jù)和用戶上傳的相關(guān)數(shù)據(jù)。對于數(shù)據(jù)的安全性保障,本平臺也提供了相應(yīng)的解決方案。
用戶輸入數(shù)據(jù)主要包括用戶密碼及算法相關(guān)配置和解釋信息,在平臺中使用MySQL 數(shù)據(jù)庫進行存儲。為了避免數(shù)據(jù)信息泄露,平臺中使用MD5+SHA 等加密機制對其進行安全性保證。此外,為了防御SQL 注入攻擊,平臺中使用PrepareStatement 類對SQL 語句進行拼接。
用戶上傳的相關(guān)數(shù)據(jù)主要包括數(shù)據(jù)集和算法實現(xiàn)包。通常數(shù)據(jù)集的數(shù)據(jù)量超過單機存儲容量,因此使用HDFS 分布式文件系統(tǒng)對其進行分布式存儲。同時使用HDFS 的文件冗余、副本分配等策略,保證數(shù)據(jù)的可用性、可靠性和安全性。算法包要被平臺中的具體集群節(jié)點進行調(diào)用,因此也需要將其上傳到集群中,并且只對具體操作用戶可視,對其他用戶不公開[4]。
本平臺集成實驗室所有普通機器,因此集群節(jié)點出現(xiàn)故障的概率較高,需要使用相應(yīng)的平臺保障機制來提升集群系統(tǒng)的穩(wěn)定性。在平臺的具體實現(xiàn)中,基于Hadoop 技術(shù), 文件系統(tǒng)采用HDFS 分布式文件系統(tǒng),主節(jié)點NameNode 監(jiān)管各從節(jié)點DataNode 的運行狀態(tài)。當(dāng)從節(jié)點發(fā)生故障時, 主節(jié)點負責(zé)重啟故障節(jié)點,若故障節(jié)點不再可用,主節(jié)點根據(jù)自身分配策略將故障節(jié)點數(shù)據(jù)轉(zhuǎn)移,保證平臺數(shù)據(jù)的可靠和可用。此外,在平臺進行具體的數(shù)據(jù)運算時, 主節(jié)點負責(zé)監(jiān)控管理每個從節(jié)點的工作狀態(tài),保證整個集群的有效運行。
按功能進行劃分,本平臺包括大數(shù)據(jù)算法庫模塊、大數(shù)據(jù)應(yīng)用模塊和云計算平臺管理模塊[5-6]。
該模塊主要改進、集成數(shù)據(jù)挖掘與機器學(xué)習(xí)常用算法,包括分類算法、聚類算法、屬性約簡算法和相關(guān)分析算法等。平臺提供友好的用戶操作和解釋界面,提升用戶使用算法的便捷性和高效性。
在平臺使用過程中,用戶主要通過前端界面進行平臺直接交互。當(dāng)用戶登錄平臺后,主界面會顯示當(dāng)前用戶權(quán)限內(nèi)可以使用的所有算法列表,用戶可以查看算法詳情和使用相應(yīng)算法。如果當(dāng)前算法不能滿足用戶的特殊需求,用戶可以自定義新算法。首先用戶需要上傳提交自定義算法程序,然后等待平臺管理員驗證,驗證成功后,新算法便出現(xiàn)在用戶算法列表中。當(dāng)用戶使用算法時,首先要給出算法的參數(shù),然后上傳要處理的數(shù)據(jù),平臺使用Ajax 和SpringMVC 把用戶提交的數(shù)據(jù)上傳到網(wǎng)站服務(wù)器中,服務(wù)器端使用SSH 的SCP 功能,將數(shù)據(jù)進行壓縮和分發(fā)到分布式文件系統(tǒng)中。SSH 的使用能夠保證數(shù)據(jù)的安全和數(shù)據(jù)傳輸?shù)膶崟r性。當(dāng)分布式文件系統(tǒng)收到數(shù)據(jù)后,Hadoop集群開始執(zhí)行算法,并通過Ajax 技術(shù)將當(dāng)前數(shù)據(jù)和算法的執(zhí)行狀態(tài)實時反饋給前端頁面。當(dāng)整個處理過程執(zhí)行完畢后,后臺將輸出Output 文件傳遞回網(wǎng)站服務(wù)器,可供當(dāng)前用戶下載查看,同時平臺也支持輸出文件的自動解析。圖2 給出了平臺的總體處理流程[7-9]。
圖2 平臺處理流程
大數(shù)據(jù)應(yīng)用模塊中,主要針對土地數(shù)據(jù)和業(yè)務(wù)特點,實現(xiàn)土地文本數(shù)據(jù)索引和土地缺失數(shù)據(jù)填充兩個主要功能。
2.3.1 土地文本數(shù)據(jù)索引
土地業(yè)務(wù)流程中,需要處理海量的文本數(shù)據(jù),本實驗平臺使用Solr 技術(shù)組織土地文本的索引和管理。
在土地文本數(shù)據(jù)組織索引的具體實現(xiàn)中,針對結(jié)構(gòu)復(fù)雜的文本格式,需要逐級對索引流程進行創(chuàng)建和管理,具體如圖3 所示[10]。
圖3 索引創(chuàng)建過程
2.3.2 缺失數(shù)據(jù)填充
在土地數(shù)據(jù)的處理和分析過程中,缺失數(shù)據(jù)的存在給準確的分析帶來挑戰(zhàn)。當(dāng)缺失數(shù)據(jù)比例較低時,往往忽略缺失數(shù)據(jù)是一個有效方法。在一些情況下,缺失值的快速修復(fù),如均值填充、中位數(shù)填充也是有效的數(shù)據(jù)填充方案。然而這種簡單的數(shù)據(jù)填充機制容易引起數(shù)據(jù)的偏差,所以需要更加有效的數(shù)據(jù)填充方法。本平臺選用R 中的mice 包完成土地大數(shù)據(jù)中缺失值的填充。該方法計算的數(shù)據(jù)填充值是從一個根據(jù)缺失數(shù)值點的特點設(shè)計的數(shù)據(jù)分布中得到的,可以保證數(shù)據(jù)的準確性[11]。
云平臺管理模塊的主要功能包括集群信息查詢、云平臺計算節(jié)點管理、集群應(yīng)用管理以及分布式文件系統(tǒng)管理等。該模塊能夠使用戶通過可視化界面便捷地管理云計算平臺,實現(xiàn)個性化的大數(shù)據(jù)應(yīng)用教學(xué)實驗方案??梢詫唧w的數(shù)據(jù)平臺節(jié)點進行操作,實現(xiàn)節(jié)點實例的直接接入,方便用戶操作。此外,通過可視化可以查看平臺的分布式文件系統(tǒng)和分布式應(yīng)用的運行情況,方便了解平臺的實施動態(tài)信息。
利用Web 端的節(jié)點控制技術(shù)noVNC,通過存儲的現(xiàn)有用戶信息和節(jié)點信息,可以獲取節(jié)點的詳細登錄信息和運行情況。
整個平臺的主界面實現(xiàn)如圖4 所示,主要包括基礎(chǔ)大數(shù)據(jù)算法庫和大數(shù)據(jù)應(yīng)用模塊。為了提升主頁面提取和顯示算法類別信息的速度,在緩存中添加主頁面內(nèi)容請求,直接將請求內(nèi)容定位到后端的Redis 中。如果請求內(nèi)容不存在,則重新提取[12]。
圖4 主頁面實現(xiàn)效果
該模塊主要實現(xiàn)了常用的數(shù)據(jù)挖掘和機器學(xué)習(xí)算法,并提供一系列幫助文檔,輔助用戶高效、便捷地使用集成的大數(shù)據(jù)算法。圖5 展示了算法庫中的聚類算法的導(dǎo)航結(jié)構(gòu),在使用具體某一個聚類算法時,根據(jù)提示的使用說明對其進行相應(yīng)操作,如果算法具體操作過程不符合定義的規(guī)范,算法將被終止。
大數(shù)據(jù)應(yīng)用模塊主要實現(xiàn)土地文本數(shù)據(jù)挖掘和不完整數(shù)據(jù)填充兩項功能,可以對用戶提供的土地文本進行搜索、挖掘和歸類管理等。如圖6 所示,能夠完成各粒度詞匯的文本檢索,并且面向具體的文檔類型設(shè)定了不同的搜索限制。針對土地缺失數(shù)據(jù)質(zhì)量的提升,平臺實現(xiàn)了不同的不完整數(shù)據(jù)處理方案。當(dāng)用戶上傳的數(shù)據(jù)中含有缺失值時,通過實現(xiàn)的填充算法進行處理,并對填充過程進行分析和監(jiān)督。只有當(dāng)用戶遵守相關(guān)數(shù)據(jù)和格式條件限定時(對應(yīng)說明界面),才能夠正常使用該功能。
圖5 聚類算法類算法引導(dǎo)頁
圖6 對土地文本數(shù)據(jù)進行多粒度檢索
云平臺管理模塊主要實現(xiàn)集群信息的查詢、云平臺計算節(jié)點管理、集群應(yīng)用管理和分布式文件系統(tǒng)管理等,為用戶提供便捷、個性化的大數(shù)據(jù)管理應(yīng)用方案。如圖7 所示,用戶可以查看分布式系統(tǒng)和應(yīng)用的運行狀況以及各節(jié)點的實時狀態(tài)信息,可以對整個平臺系統(tǒng)進行圖像化操作,提升用戶對平臺管理的便捷性和可操作性。
圖7 集群實例信息列表
本文依據(jù)我校軟件學(xué)院大數(shù)據(jù)研究所的研究成果,設(shè)計了一套全新的大數(shù)據(jù)專業(yè)方向數(shù)據(jù)算法庫教學(xué)實驗平臺。該平臺更新并充實了現(xiàn)有的教學(xué)實驗環(huán)節(jié),將研究所的研究內(nèi)容融入教學(xué),很好地激發(fā)了學(xué)生學(xué)習(xí)專業(yè)知識的積極性和主動性,提升了學(xué)生的動手實踐能力。希望本文提出的算法庫平臺能夠為其他院校在大數(shù)據(jù)人才培養(yǎng)方面提供有益參考。