本站小編為你精心準(zhǔn)備了海量數(shù)據(jù)異常檢測技術(shù)設(shè)計與實現(xiàn)參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
【摘要】海量數(shù)據(jù)文件異常并行檢測技術(shù)實現(xiàn)了對共享文件存儲系統(tǒng)中數(shù)據(jù)文件合法性的檢查功能。主要采用集群和多線程技術(shù),實現(xiàn)了在服務(wù)器和線程兩級的并行處理,可有效提高文件掃描檢測效率,具有高可用、高并發(fā)特性。經(jīng)實際部署和驗證測試,該并行檢測技術(shù)具有較高的檢測效率。
【關(guān)鍵詞】海量數(shù)據(jù);集群;多線程;并行;檢測;效率
大數(shù)據(jù)分析處理技術(shù)從海量數(shù)據(jù)中發(fā)現(xiàn)隱含的知識。但數(shù)據(jù)獲取的方式、速度、數(shù)據(jù)格式以及人為的誤操作等都會影響數(shù)據(jù)質(zhì)量,進(jìn)而給大數(shù)據(jù)分析帶來麻煩。大數(shù)據(jù)處理流程中利用數(shù)據(jù)清洗來解決數(shù)據(jù)質(zhì)量問題。數(shù)據(jù)清洗通過對數(shù)據(jù)進(jìn)行重新審查和校驗,刪除重復(fù)信息、非法格式文件以及糾正存在的錯誤,并提供數(shù)據(jù)一致性,從而保證數(shù)據(jù)質(zhì)量,服務(wù)大數(shù)據(jù)分析。遙感衛(wèi)星系統(tǒng)在運(yùn)行過程中,大量的遙感數(shù)據(jù)7*24小時不間斷下傳,文件系統(tǒng)中存儲了海量的遙感數(shù)據(jù)。由于衛(wèi)星器件問題、傳輸問題和地面人為誤操作等都會造成一些數(shù)據(jù)文件的錯誤。如不及時對非法數(shù)據(jù)文件進(jìn)行檢測清理,將會影響后續(xù)的數(shù)據(jù)分析處理業(yè)務(wù)。由于遙感數(shù)據(jù)體量巨大,且增長速度快,因此需要以更快的速度對數(shù)據(jù)進(jìn)行檢測,在規(guī)定的時間內(nèi)完成對數(shù)據(jù)的清洗。本文設(shè)計并實現(xiàn)了一種海量數(shù)據(jù)文件異常并行檢測技術(shù),利用服務(wù)器集群對海量數(shù)據(jù)文件進(jìn)行異常檢測,并在服務(wù)器執(zhí)行過程中采用多線程技術(shù),從而實現(xiàn)服務(wù)器和線程兩級的并行處理,取得了較高的掃描檢測效率。
1相關(guān)工作
通過數(shù)據(jù)分析獲取知識和解決問題是科學(xué)研究和工程實踐的重要手段,計算機(jī)的出現(xiàn)使數(shù)據(jù)分析計算的效率實現(xiàn)了質(zhì)的飛躍。隨著科技發(fā)展,科研和工業(yè)上遇到的問題愈加復(fù)雜龐大,要分析的數(shù)據(jù)量也在不斷增加,單機(jī)的處理速度已經(jīng)無法滿足要求。1993年,集群技術(shù)逐漸得到重視和發(fā)展。集群將若干臺計算機(jī)(或工作站、服務(wù)器等)通過網(wǎng)絡(luò)連接,多機(jī)協(xié)同工作實現(xiàn)并行處理,能夠同時具備高性能和高可用性。1997年戰(zhàn)勝國際象棋大師 卡斯帕羅夫的“深藍(lán)”計算機(jī)就是由多臺運(yùn)行AIX的IBMSP2計算機(jī)組成的集群,每秒可以計算2億步。2000年,新墨西哥大學(xué)的LosLobos[1]集群實際上是256臺IBM的Netfinity個人多服務(wù)器組成的“超級集群”。它以低成本提供超級計算機(jī)水平的功能,每秒鐘的處理可達(dá)到3750億次。該速度在當(dāng)時前500臺超級計算機(jī)中排名第24。進(jìn)入21世紀(jì),現(xiàn)代工業(yè)高速發(fā)展,特別是網(wǎng)絡(luò)信息產(chǎn)業(yè)的繁榮,使得數(shù)據(jù)呈現(xiàn)爆炸式的增長。海量數(shù)據(jù)的處理需求催生了大數(shù)據(jù)處理技術(shù)。大數(shù)據(jù)處理的基本思想是分治,采用分布式并行計算,將大數(shù)據(jù)問題分解成規(guī)模較小的子問題進(jìn)行求解,然后合并子問題的解得到最終解[2],在處理速度上取得了質(zhì)的飛躍。2004年Google公司提出的MapReduce[3]是一種專門處理大數(shù)據(jù)的編程模型和實現(xiàn)框架,具有簡單、高效、易伸縮以及高容錯性等特點(diǎn)。MapReduce技術(shù)本質(zhì)是一種并行計算,所以也采用集群作為硬件環(huán)境。基于MapReduce框架的Hadoop大數(shù)據(jù)處理平臺可以利用普通計算機(jī)搭建集群,為超大數(shù)據(jù)集提供存儲和處理能力,適合大規(guī)模離線數(shù)據(jù)的批處理。缺點(diǎn)是小文件處理性能較差,且易造成負(fù)載不均衡。Spark[4]是輕量的、基于內(nèi)存計算的開源集群計算平臺。Spark通過完善內(nèi)存計算和處理優(yōu)化機(jī)制加快批處理工作負(fù)載的運(yùn)行速度,批處理速度比MapReduce快10倍,內(nèi)存中分析速度快100倍。由于集群在提供高效計算的同時具有較高的性價比,且可以保證計算系統(tǒng)的高可用,并行計算對集群有越來越強(qiáng)的依賴[5],所以本文決定采用集群作為海量數(shù)據(jù)文件異常檢測的硬件平臺,并利用多線程技術(shù)實現(xiàn)集群和線程兩級的并行處理。
2海量數(shù)據(jù)文件異常并行檢測技術(shù)設(shè)計
2.1設(shè)計目標(biāo)
2.1.1高效檢測能力遙感衛(wèi)星系統(tǒng)24小時連續(xù)運(yùn)行,海量探測數(shù)據(jù)不間斷的下傳,存儲在分布式文件系統(tǒng)中。數(shù)據(jù)文件異常檢測服務(wù)需要能夠快速檢測出海量數(shù)據(jù)文件中的非法文件,并及時清除,保證數(shù)據(jù)分析處理業(yè)務(wù)對數(shù)據(jù)的訪問。
2.1.2智能檢測能力系統(tǒng)應(yīng)允許用戶選擇文件目錄和檢測時間,設(shè)置定時掃描檢測任務(wù),從而實現(xiàn)海量數(shù)據(jù)文件異常檢測的智能化。
2.1.3系統(tǒng)高可用星上數(shù)據(jù)持續(xù)下傳,文件系統(tǒng)中不斷有新的文件存入,數(shù)據(jù)文件異常檢測服務(wù)勢必也要長時間運(yùn)行。服務(wù)器長期運(yùn)行下會有一定的故障概率,如何避免服務(wù)器宕機(jī)造成服務(wù)中斷是設(shè)計中需要解決的問題。
2.2設(shè)計思路
系統(tǒng)擬采用服務(wù)器集群來達(dá)到檢測所需的性能,在服務(wù)器執(zhí)行掃描檢測任務(wù)過程中運(yùn)用多線程技術(shù)實現(xiàn)并行處理進(jìn)一步提高檢測效率。系統(tǒng)由負(fù)載均衡服務(wù)器和執(zhí)行服務(wù)器集群組成,其主要功能模塊構(gòu)成如圖1所示。(1)通過任務(wù)配置模塊,實施檢測策略的靈活配置,能夠從文件名、文件格式、文件內(nèi)容等不同角度對異常文件進(jìn)行檢測,并可對檢測時間、檢測目錄等信息靈活選擇,從而實現(xiàn)智能化檢測。(2)通過運(yùn)行在負(fù)載均衡服務(wù)器上的負(fù)載均衡模塊將任務(wù)劃分后分發(fā)到多臺執(zhí)行服務(wù)器上并行執(zhí)行,從而提高檢測效率,并且集群可以根據(jù)需求靈活擴(kuò)展系統(tǒng)能力。(3)在執(zhí)行服務(wù)器上設(shè)計實現(xiàn)服務(wù)器資源監(jiān)控調(diào)度模塊,監(jiān)視服務(wù)器資源動態(tài)使用情況,根據(jù)業(yè)務(wù)繁忙程度為檢測服務(wù)分配服務(wù)器資源,從而在充分利用資源提高檢測效率的同時保證服務(wù)器上其他業(yè)務(wù)的正常運(yùn)行。(4)任務(wù)執(zhí)行模塊運(yùn)行在執(zhí)行服務(wù)器上。其中線程管理子模塊負(fù)責(zé)開設(shè)線程池,管理多個線程并行執(zhí)行掃描檢測任務(wù),進(jìn)一步提高檢測效率;任務(wù)隊列管理子模塊負(fù)責(zé)對任務(wù)隊列進(jìn)行組織管理;線程執(zhí)行模塊中各線程從任務(wù)隊列中提取任務(wù)進(jìn)行執(zhí)行。(5)各服務(wù)器任務(wù)完成后通過集成在服務(wù)器上的消息發(fā)送端將結(jié)果發(fā)送至分發(fā)服務(wù)器,由分發(fā)服務(wù)器直接推送給前端進(jìn)行顯示。(6)系統(tǒng)內(nèi)服務(wù)器實施熱備和冗余設(shè)計,當(dāng)某臺服務(wù)器宕機(jī)后,冗余節(jié)點(diǎn)能夠在短時間內(nèi)接手任務(wù),保證服務(wù)持續(xù)進(jìn)行,從而實現(xiàn)系統(tǒng)的高可用。
3關(guān)鍵技術(shù)實現(xiàn)
服務(wù)器集群在工作過程中,負(fù)載均衡模塊運(yùn)行負(fù)載均衡策略完成集群之間任務(wù)的快速分發(fā);服務(wù)器資源監(jiān)視調(diào)度模塊為掃描檢測任務(wù)分配一定的系統(tǒng)資源用于執(zhí)行;任務(wù)執(zhí)行模塊依托多核處理器為任務(wù)進(jìn)程開設(shè)線程池,管理和運(yùn)行多個線程,實現(xiàn)線程級的并行處理;各服務(wù)器檢測結(jié)果最終通過消息發(fā)送端發(fā)送至分發(fā)服務(wù)器,由分發(fā)服務(wù)器推送至前端顯示。
3.1集群的構(gòu)建和功能實現(xiàn)
3.1.1服務(wù)器集群構(gòu)建系統(tǒng)呈三層結(jié)構(gòu),主要包括:負(fù)載均衡服務(wù)器、任務(wù)執(zhí)行服務(wù)器集群和分布式共享文件系統(tǒng)。如圖2所示。負(fù)載均衡服務(wù)器是系統(tǒng)的對外端口。用戶提交的任務(wù)請求通過負(fù)載均衡服務(wù)器分發(fā)給執(zhí)行服務(wù)器。執(zhí)行服務(wù)器根據(jù)分配的任務(wù)從分布式文件系統(tǒng)中提取數(shù)據(jù)進(jìn)行處理,并將處理結(jié)果寫入數(shù)據(jù)庫。為保證系統(tǒng)的高可用,負(fù)載均衡服務(wù)器采用主從式雙機(jī)熱備,主服務(wù)器負(fù)責(zé)負(fù)載均衡和任務(wù)分發(fā)。主服務(wù)器出現(xiàn)故障停機(jī),從服務(wù)器可在短時間內(nèi)接管服務(wù),保證系統(tǒng)的正常運(yùn)行。為執(zhí)行服務(wù)器設(shè)置冗余節(jié)點(diǎn),當(dāng)監(jiān)測到一臺執(zhí)行服務(wù)器出現(xiàn)故障,系統(tǒng)會啟用冗余節(jié)點(diǎn)接管該服務(wù)器的任務(wù)繼續(xù)執(zhí)行,保證系統(tǒng)的高可用。各執(zhí)行服務(wù)器獨(dú)立完成分配的任務(wù),執(zhí)行服務(wù)器之間不進(jìn)行通信,從而降低依賴和耦合,便于集群的擴(kuò)展。
3.1.2基于負(fù)載均衡的任務(wù)分發(fā)負(fù)載均衡模塊運(yùn)行基于任務(wù)量和服務(wù)器負(fù)載狀態(tài)的負(fù)載均衡策略,防止出現(xiàn)服務(wù)器超載或饑餓現(xiàn)象,提高集群資源利用率,最大限度地發(fā)揮集群處理能力。執(zhí)行服務(wù)器serveri資源空閑情況主要指CPU空閑情況,用空閑的核心數(shù)量ci表示。各服務(wù)器的空閑資源在所有服務(wù)器空閑資源總和中占有的比例稱為空閑資源占比ki:用戶請求的任務(wù)量為M,則根據(jù)空閑資源占比各個執(zhí)行服務(wù)器分配到的任務(wù)量為mi:在實際工作中,文件系統(tǒng)將下傳的遙感數(shù)據(jù)按年、月、日、小時劃分目錄進(jìn)行組織,方便后續(xù)的使用管理。由于遙感衛(wèi)星在每個小時所產(chǎn)生的數(shù)據(jù)量基本相當(dāng),所以在實際的均衡策略執(zhí)行時并不需統(tǒng)計目錄下確切的文件數(shù)量,可將小時目錄的數(shù)量近似看做任務(wù)量來進(jìn)行分配。現(xiàn)用戶請求對目錄DATA下的文件進(jìn)行檢測,其下有0-23共24個小時目錄。如圖3所示,集群中有5臺服務(wù)器,假定當(dāng)前各服務(wù)器均為空載,則通過負(fù)載均衡策略將子目錄分配給各執(zhí)行服務(wù)器執(zhí)行。
3.1.3檢測結(jié)果推送如圖4所示,集群中采用TCP遷移技術(shù),將客戶端與均衡服務(wù)器的TCP連接透明地遷移至執(zhí)行服務(wù)器上。執(zhí)行服務(wù)器執(zhí)行完畢后將結(jié)果寫入數(shù)據(jù)庫,不經(jīng)過負(fù)載均衡服務(wù)器而是直接向客戶端推送結(jié)果信息,既有效減少了客戶端的響應(yīng)延遲,又大大降低負(fù)載均衡服務(wù)器的負(fù)擔(dān),有助于提高整個系統(tǒng)的性能。
3.2基于多線程的并行檢測
3.2.1并行檢測流程掃描檢測任務(wù)的執(zhí)行過程如圖5所示。執(zhí)行服務(wù)器上的任務(wù)執(zhí)行模塊根據(jù)得到的任務(wù)配置信息和分配的系統(tǒng)資源量開辟適當(dāng)規(guī)模的線程池,管理多個線程并行執(zhí)行掃描檢測任務(wù)。用戶提交任務(wù)時通過任務(wù)配置模塊和負(fù)載均衡模塊將配置信息傳遞給任務(wù)執(zhí)行模塊,同時服務(wù)器資源監(jiān)視調(diào)度模塊監(jiān)測服務(wù)器上業(yè)務(wù)運(yùn)行情況,為檢測服務(wù)分配系統(tǒng)資源。在業(yè)務(wù)空閑狀態(tài)下可以為檢測服務(wù)分配盡量多的資源加快掃描檢測速率,在業(yè)務(wù)繁忙狀態(tài)下可適當(dāng)回收部分資源,保證服務(wù)器上其他業(yè)務(wù)的正常運(yùn)行。任務(wù)執(zhí)行模塊中的線程管理子模塊根據(jù)獲得的任務(wù)信息和可分配資源信息開辟包含多個線程的線程池,并行執(zhí)行掃描檢測任務(wù)。在線程執(zhí)行過程中,首先從數(shù)據(jù)庫中獲得篩選依據(jù),而后遞歸進(jìn)入目錄對文件格式、各級目錄以及文件屬性和目錄層級匹配是否規(guī)范進(jìn)行判斷,并將違規(guī)數(shù)據(jù)寫入數(shù)據(jù)庫。
3.2.2多線程的實現(xiàn)線程池結(jié)構(gòu)如圖6所示。線程池主要由線程、任務(wù)隊列和線程管理器組成。其中線程管理器負(fù)責(zé)調(diào)度,避免反復(fù)創(chuàng)建和銷毀線程造成不必要的時間開銷,提高資源利用率。服務(wù)器根據(jù)可分配的資源量默認(rèn)開辟線程數(shù)為n的線程池,為核心線程。任務(wù)到達(dá)時,按小時目錄劃分為子任務(wù)分配給各個線程執(zhí)行。若子任務(wù)數(shù)多于n,則線程池增開線程,但總數(shù)不得超過可分配的最大核心數(shù)m;若線程池已滿則將任務(wù)放入任務(wù)隊列等待執(zhí)行;若任務(wù)隊列已滿則拒絕新加入的任務(wù)。
4實驗分析
4.1實驗環(huán)境
4.1.1硬件環(huán)境1臺PC終端(作為軟件操作終端),4臺服務(wù)器(1臺負(fù)載均衡服務(wù)器,3臺執(zhí)行服務(wù)器)。服務(wù)器配置如下:CPU:Intel(R)Xeon(R)CPUE5-2650v3@2.30GHz×4網(wǎng)卡:IntelCorporation82599ES萬兆網(wǎng)卡
4.1.2軟件環(huán)境集群操作系統(tǒng):RedhatLinux6.564位PC端操作系統(tǒng):Windows764位中文版文件系統(tǒng):華為Oceanstor5500分布式文件系統(tǒng)
4.2性能測試及結(jié)果分析
實驗按照實際的文件格式在DATA目錄下生成日期子目錄20190103,在20190103目錄下生成12個小時子目錄01-12,每個小時目錄內(nèi)包含100000條正常數(shù)據(jù)和2000條異常數(shù)據(jù),共計1224000條數(shù)據(jù)。分別采用集群服務(wù)器多線程執(zhí)行、單服務(wù)器多線程執(zhí)行和集群服務(wù)器單線程執(zhí)行對DATA目錄進(jìn)行多次掃描檢測對比實驗,記錄任務(wù)執(zhí)行時間如表1。從表1中的數(shù)據(jù)可以看出,集群服務(wù)器的檢測效率要優(yōu)于單機(jī)的檢測效率,多線程的檢測效率要優(yōu)于單線程的檢測效率。分別定義集群多線程、單機(jī)多線程和集群單線程的執(zhí)行速率為V1、V2、V3,則有:,即集群多線程的檢測效率大約是單機(jī)多線程檢測效率的2.66倍;,即集群多線程的檢測效率大約是集群單線程檢測效率的3.59倍。理想狀態(tài)下,3臺服務(wù)器組成的集群的檢測效率應(yīng)該是單機(jī)檢測效率的3倍,但由于集群中各臺服務(wù)器在讀寫數(shù)據(jù)庫時存在競爭,造成集群的實際檢測效率略低于單機(jī)檢測效率的3倍;擁有4個核心的服務(wù)器最多可以開設(shè)4個線程,多線程的檢測效率應(yīng)該是單線程檢測效率的4倍,但由于各線程之間存在資源爭用,造成多線程的實際檢測效率略低于單線程檢測效率的4倍。實驗中,所有異常數(shù)據(jù)均能被檢測出來,同時沒有正常數(shù)據(jù)被誤檢為異常數(shù)據(jù),檢測準(zhǔn)確率為100%。由此得出采用集群和多線程技術(shù)對海量數(shù)據(jù)進(jìn)行掃描檢測,在檢測效率上可以取得顯著提高,是一個可行的方案。
5結(jié)語
本文通過對海量數(shù)據(jù)處理技術(shù)的學(xué)習(xí)研究以及對實際業(yè)務(wù)的具體分析,設(shè)計了一種針對海量數(shù)據(jù)文件異常的并行檢測技術(shù),主要采用集群和多線程的技術(shù)進(jìn)行實現(xiàn)。通過在百萬量級的數(shù)據(jù)上進(jìn)行對比實驗,取得了令人滿意的結(jié)果,證明采用集群和多線程技術(shù)能夠顯著提高檢測效率。
參考文獻(xiàn)
[1]陳星,黃卡瑪.構(gòu)建基于Windows和MPI的Beowulf并行計算系統(tǒng)[J].計算機(jī)工程與應(yīng)用,2003(04):59-61.
[2]宋杰,孫宗哲,毛克明,等.MapReduce大數(shù)據(jù)處理平臺與算法研究進(jìn)展[J].軟件學(xué)報,2017,28(03):514-543.
[5]吳俊鋒.基于Windows系統(tǒng)并行集群的實現(xiàn)與應(yīng)用研究[J].信息系統(tǒng)工程,2016(08):127-130.
[6]眭俊華,劉慧娜,王建鑫,等.多核多線程技術(shù)綜述[J].計算機(jī)應(yīng)用,2013,33(z1):239-242,2.
[7]薛軍,李增智,王云嵐.負(fù)載均衡技術(shù)的發(fā)展[J].小型微型計算機(jī)系統(tǒng),2003,24(12):2100-2103.
[8]王華,馬亮,顧明.線程池技術(shù)研究與應(yīng)用[J].計算機(jī)應(yīng)用研究,2005(11):141-142+1.
[9]王寧.一種基于集群的通用并行計算框架設(shè)計[J].現(xiàn)代計算機(jī),2016(35):20-25,32.
作者:姜少彬 伍江江 周正 單位:國防科技大學(xué)電子科學(xué)學(xué)院