郎葉楠++高躍明
摘要:隨著國際反恐形式的不斷嚴(yán)峻,通信社交圈的獲取與分析逐漸成為預(yù)防恐怖行動的重要手段之一。為滿足社會對通信社交圈進行分析的需求,本文利用分布式存儲技術(shù)以及分布式運算技術(shù),通過對電信信令數(shù)據(jù)的分析獲取人員通信社交圈,社交圈中的信息可以幫助分析人員快速鎖定目標(biāo)、了解事件發(fā)生順序。與此同時,本文合理利用了開源軟件的特性,有效降低了系統(tǒng)的開發(fā)與維護成本,適合于大范圍推廣。本文給出了較為完整的社交圈分析系統(tǒng)的設(shè)計方案,并通過進一步實現(xiàn)證明了方案的可行性。
關(guān)鍵詞:計算機應(yīng)用技術(shù);信令;社交圈分析;分布式
中圖分類號:TN925+.3
文獻標(biāo)識碼:A
DOI:10.3969/j.issn.1003-6970.2016.02.021
引言
在多種犯罪預(yù)防的手段中,通信社交圈的分析是重要手段之一,通過對指定人員通信行為的分析,分析人員可以達(dá)到以下目的:1.關(guān)鍵人員定位;2.協(xié)同人員挖掘;3.人員行為梳理(了解事件發(fā)生順序)。反恐領(lǐng)域的特殊性導(dǎo)致了其對通信社交圈分析有諸多硬性需求。首先,用來分析的數(shù)據(jù)應(yīng)當(dāng)盡量全面;其次,分析速度要快;最后,對社交圈分析所需的軟硬件需求應(yīng)盡量低,從而適合大規(guī)模推廣。
當(dāng)前,我國的基層民警大多使用人工的方式進行社交圈分析,在進行分析之前需要從相關(guān)運營商調(diào)取人員通信記錄,通過對記錄的分析確定下一批待分析的人員名單,然后再次調(diào)取這些人的通信記錄,周而復(fù)始。這種人工分析的方式速度緩慢,分析一個通信行為較活躍人員幾小時的通信行為甚至需要一至兩天的時間。同時,人工分析使得分析人員極易疏漏重要信息,使得分析結(jié)果的可靠度下降。雖然當(dāng)前也存在一些自動化分析軟件,但這些軟件都無法很好的解決數(shù)據(jù)來源以及處理問題,這給用戶的使用帶來了不便。
為克服傳統(tǒng)人工分析方式以及現(xiàn)有軟件的不足,本文所設(shè)計的系統(tǒng)以a接口與Abis接口信令產(chǎn)生的話單數(shù)據(jù)作為分析基礎(chǔ),通過對話單數(shù)據(jù)的采集、預(yù)處理、存儲以及分析來生成人員通信社交圈,有力地提高了分析的速度與準(zhǔn)確度并很好地解決了數(shù)據(jù)的采集以及處理問題。
利用開源軟件搭建云服務(wù)是現(xiàn)今系統(tǒng)架構(gòu)的趨勢,本系統(tǒng)采用HBase與HDFS等開源軟件搭建了能夠為用戶提供在線社交圈分析的云服務(wù)系統(tǒng)。
1 功能分析
根據(jù)本人對目標(biāo)用戶需求的調(diào)研,分析人員在進行社交圈分析時存在以下使用場景:
(1)已明確目標(biāo)群體(多于一人)并對群體內(nèi)人員的信息有所了解,需要查看群體內(nèi)人員在某一時間范圍內(nèi)的社交行為從而推測事件發(fā)生順序。
(2)已有明確的目標(biāo)(任意數(shù)量),但不清楚是否還有其他協(xié)同人員,故而需要對某一時間范圍內(nèi)目標(biāo)人員的短信以及通話聯(lián)系人進行分析;
針對上述場景,本系統(tǒng)為社交圈分析提供了兩種使用模式:
(l)針對場景l(fā),本系統(tǒng)提供組內(nèi)分析模式。組內(nèi)分析模式僅對指定的目標(biāo)人員間的行為進行檢索,生成的社交圈中僅包含指定的目標(biāo)人員以及他們之間的聯(lián)系,分析人員可通過查看社交圈來推斷事件的發(fā)生順序。
(2)針對場景2,本系統(tǒng)提供組外分析模式。組外分析模式可以對指定的人員進行全量的通信行為檢索,生成的社交圈中包含分析人員指定的目標(biāo)人員、目標(biāo)人員的直接聯(lián)系人以及上述所有人之間的聯(lián)系,分析人員可通過查看社交圈來推斷目標(biāo)人員是否還有其他協(xié)同人員;
除以上兩種可供選擇的分析模式外,分析人員還可以在分析時指定是否只查看短信行為和是否只查看通話行為。
2 關(guān)鍵問題
2.1 數(shù)據(jù)存儲空間
本系統(tǒng)需在海量數(shù)據(jù)存儲的基礎(chǔ)上才能運行,這就要求本系統(tǒng)能夠存儲足夠大量的數(shù)據(jù)。以浙江某城市為例,該城市每天產(chǎn)生20G的數(shù)據(jù),而一次社交圈分析至少需要使用30天的數(shù)據(jù)才能產(chǎn)生有意義的分析結(jié)果。
2.2 業(yè)務(wù)響應(yīng)時間
本系統(tǒng)作為在線分析系統(tǒng),響應(yīng)時間的長短對用戶體驗有重要影響,響應(yīng)時間越短,用戶體驗越好。本系統(tǒng)在響應(yīng)時間上存在以下難點:
數(shù)據(jù)量大,數(shù)據(jù)檢索時間長。本系統(tǒng)在進行分析之前需要對大量數(shù)據(jù)進行檢索,如果沒有有效的優(yōu)化措施,分析業(yè)務(wù)將在數(shù)據(jù)檢索環(huán)節(jié)耗費大量時間。
每次分析需要進行多次數(shù)據(jù)檢索。由于本系統(tǒng)針對業(yè)務(wù)的特殊性,每次社交圈分析都需要對數(shù)據(jù)進行多次檢索。從以上章節(jié)流程說明可見,除多起始點組內(nèi)模式外,其他所有分析都要從起始點開始,通過起始點的檢索才能確定下一次檢索的條件,因此至少需要兩次檢索。在數(shù)據(jù)量本就很大的前提下,多次檢索無疑會進一步增加數(shù)據(jù)檢索階段的耗時。
無法有效利用緩存機制來減少每次檢索的耗時。在本業(yè)務(wù)中,不僅多個分析請求的起始點間沒有關(guān)聯(lián),單個分析過程內(nèi)的多個檢索條件也沒有明顯關(guān)聯(lián),整個業(yè)務(wù)有明顯的數(shù)據(jù)量大、數(shù)據(jù)復(fù)用率低的特點,因此緩存機制對檢索速度的提升沒有明顯效果。
3 系統(tǒng)設(shè)計與實現(xiàn)
3.1 系統(tǒng)結(jié)構(gòu)設(shè)計
圖1給出了系統(tǒng)靜態(tài)結(jié)構(gòu)設(shè)計,根據(jù)子系統(tǒng)功能的不同,系統(tǒng)可劃分為話單采集子系統(tǒng)、數(shù)據(jù)存儲子系統(tǒng)、社交圈分析子系統(tǒng)以及前端展示子系統(tǒng)以及管理平臺。
其中,話單采集子系統(tǒng)負(fù)責(zé)接收信令監(jiān)測系統(tǒng)發(fā)送來的話單數(shù)據(jù)并對話單數(shù)據(jù)進行預(yù)處理。數(shù)據(jù)存儲子系統(tǒng)負(fù)責(zé)存儲經(jīng)過了預(yù)處理的話單。社交圈分析子系統(tǒng)負(fù)責(zé)社交圈分析的業(yè)務(wù)邏輯,根據(jù)用戶的業(yè)務(wù)請求對數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)進行分析,分析結(jié)果交由前端展示子系統(tǒng)返回給用戶。前端展示子系統(tǒng)是本系統(tǒng)與用戶進行交互的接口,負(fù)責(zé)分析請求的接收、分析結(jié)果的展示等,前端展示子系統(tǒng)在收到社交圈分析子系統(tǒng)提供的分析結(jié)果后,會將經(jīng)過了數(shù)據(jù)可視化處理的數(shù)據(jù)展現(xiàn)給用戶。系統(tǒng)各部分具體功能如下:
(l)話單采集子系統(tǒng)
話單采集子系統(tǒng)是所有數(shù)據(jù)的入口,負(fù)責(zé)接收和預(yù)處理來自信令監(jiān)測系統(tǒng)的話單數(shù)據(jù)。話單采集子系統(tǒng)內(nèi)部分為話單預(yù)處理模塊與話單采集模塊,話單采集模塊定期接收來自信令監(jiān)測系統(tǒng)的話單數(shù)據(jù),話單預(yù)處理模塊對接收到的話單進行預(yù)處理,經(jīng)過處理的數(shù)據(jù)交由數(shù)據(jù)存儲子系統(tǒng)進行存儲。
話單采集模塊:話單采集模塊負(fù)責(zé)定期接收來自信令監(jiān)測系統(tǒng)的數(shù)據(jù),二者使用FTP服務(wù)進行數(shù)據(jù)傳輸。話單采集模塊對接收到的數(shù)據(jù)進行解壓縮操作后交給話單預(yù)處理模塊進行話單預(yù)處理。
話單預(yù)處理模塊:話單預(yù)處理負(fù)責(zé)對接收到的話單文件進行預(yù)處理,包括無效話單過濾以及關(guān)鍵信息提取。由于采集來的話單可能以不同格式存在,話單預(yù)處理模塊還具備對多格式的兼容功能,其接受指定格式的多種數(shù)據(jù),輸出統(tǒng)一格式的數(shù)據(jù)交由數(shù)據(jù)存儲子系統(tǒng)進行存儲。
(2)數(shù)據(jù)存儲子系統(tǒng)
數(shù)據(jù)存儲子系統(tǒng)是本社交圈分析系統(tǒng)的核心子系統(tǒng)之一,所有話單數(shù)據(jù)都存儲在其中。話單數(shù)據(jù)因其數(shù)據(jù)量大、隨機讀取性能要求的特點而存儲在HBase數(shù)據(jù)庫中。
話單數(shù)據(jù):話單數(shù)據(jù)是經(jīng)過話單采集子系統(tǒng)預(yù)處理的數(shù)據(jù),是本社交圈分析系統(tǒng)的核心數(shù)據(jù),話單數(shù)據(jù)中包含主被叫號碼,業(yè)務(wù)發(fā)生時間、時長以及業(yè)務(wù)相關(guān)數(shù)據(jù)。
(3)社交圈分析子系統(tǒng)
社交圈分析子系統(tǒng)是本社交圈分析系統(tǒng)的業(yè)務(wù)核心,負(fù)責(zé)對數(shù)據(jù)存儲子系統(tǒng)中的數(shù)據(jù)進行分析,所有與業(yè)務(wù)相關(guān)的邏輯都由社交圈子系統(tǒng)完成。社交圈子系統(tǒng)在分析結(jié)束后,將完整的社交圈交給前端展示子系統(tǒng)。在與數(shù)據(jù)存儲子系統(tǒng)的交互中,數(shù)據(jù)存儲子系統(tǒng)只進行數(shù)據(jù)檢索,數(shù)據(jù)的分析、匯總以及下一輪查詢的查詢條件都由社交圈分析子系統(tǒng)完成。
(4)前端展示子系統(tǒng) 前端展示子系統(tǒng)是本系統(tǒng)與最終用戶的接口,所有與用戶的交互都由本子系統(tǒng)完成。在交互部分,前端展示子系統(tǒng)的功能包括用戶注冊、用戶登錄、用戶賬號信息修改以及用戶社交圈分析請求的收集,收集來的分析請求會交由社交圈分析子系統(tǒng)進行進一步處理。
3.2 數(shù)據(jù)存儲子系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計
由于話單數(shù)據(jù)的數(shù)據(jù)量大、分析業(yè)務(wù)對話單隨機讀取的性能要求高,故而本系統(tǒng)采用HBase存儲話單數(shù)據(jù)。然而,HBase是列存儲性Key-Value數(shù)據(jù)庫,僅可對row key進行排序和索引(自動執(zhí)行),有效話單無法直接存儲到HBase中去。雖然HBase只有一種固定的索引,但這種索引在HBase的運行中十分高效,合理利用這一點可以在避開檢索條件單一這項缺點的同時最大化HBase的隨機讀取性能,因此,row key的設(shè)計就成為了數(shù)據(jù)結(jié)構(gòu)設(shè)計的重點。
一個好的row key設(shè)計應(yīng)當(dāng)能達(dá)到以下目的:
(l)分散數(shù)據(jù),盡量避免訪問熱點的出現(xiàn)。HBase集群中的每臺服務(wù)器節(jié)點都保存有一部分的數(shù)據(jù),多節(jié)點同時進行數(shù)據(jù)檢索時可以充分發(fā)揮系統(tǒng)性能,相反,若查詢只集中在某幾個節(jié)點上,則會嚴(yán)重降低系統(tǒng)性能,導(dǎo)致業(yè)務(wù)響應(yīng)時間的提高。
(2)減少查詢所需時間??梢酝ㄟ^兩種途徑達(dá)到減少查詢時間的目的:減少查詢次數(shù)與減少單次查詢所需時間。
在對本系統(tǒng)的業(yè)務(wù)進行分析后可知,手機號碼與業(yè)務(wù)開始時間必然JL}{現(xiàn)在檢索條件之中,且對手機號碼的檢索分為兩種情況:全量查詢與指定查詢。全量查詢是指查詢與指定單個號碼相關(guān)的所有數(shù)據(jù),發(fā)生在起始點查詢階段;指定查詢是指查詢兩個號碼間的通信數(shù)據(jù),發(fā)生在直接聯(lián)系人查詢階段。顯然,指定查詢可用全量查詢實現(xiàn),實現(xiàn)方式為對兩個號碼中的任意一個進行全量查詢,再以另一個號碼對查詢結(jié)果進行過濾。鑒于過濾操作可以方便地通過HBase提供的filter實現(xiàn),故而本系統(tǒng)便以全量查詢的方式實現(xiàn)指定查詢。
本系統(tǒng)中,row key由單個號碼和該次通信的開始時間作為row key,二者以符號“l(fā)”分隔,其格式為
MDNlstart_time
在對話單數(shù)據(jù)進行存儲時,每條話單中的主被叫分別作為MDN -次,生成兩份話單數(shù)據(jù),同時向數(shù)據(jù)中插入一個標(biāo)示通信方向的屬性,數(shù)據(jù)流程如圖2,數(shù)據(jù)庫中數(shù)據(jù)結(jié)構(gòu)如表1。
流程說明:
(l)提取有效話單中的主叫號與開始時間,按照MDNlstart_time的格式組成row key,同時添加direction列以標(biāo)示業(yè)務(wù)的通信方向,有效話單中的其他數(shù)據(jù)被放在各自的列中,數(shù)值不變。
(2)提取有效話單中的被叫號碼與開始時間,按照MDNlstart_time的格式組成row key,同時添加direction列以標(biāo)示業(yè)務(wù)的通信方向,有效話單中的其他數(shù)據(jù)被放在各自的列中,數(shù)值不變。
在進行數(shù)據(jù)查詢,全量查詢與指定查詢兩種查詢方式需要使用不同的查詢命令。
全量查詢
全量查詢使用scan操作對row key進行檢索,在scan操作中指定row key的起始行與結(jié)束行。例如,查詢號碼13813800000在2015年10月1日0點0分至2015年10月10日10點10分間的通信數(shù)據(jù),就可以使用如下命令在HBase中進行查詢
Scan‘TABLENAME: {STARTROW=>13813800000120151001000000
, ENDROW=>13813800000120151010101011}
指定查詢
指定查詢同樣使用scan操作,與全量查詢不同的是,這類查詢需要在參數(shù)中指定所使用的filter。例如,查詢號碼13813800000與13 813 811111在2015年10月1日0點0分至2015年10月10日10點10分間的通信數(shù)據(jù),就可以使用如下命令在HBase中進行查詢
Scan‘TABLENAME: {STARTROW=>13813800000120151001000000
, ENDROW=>13813800000120151010101011
,COLUMNS=>data
, FILTER=>”SingleColumnValueFilter(‘data,opnt,=,‘13813811111)”}
由于社交圈分析業(yè)務(wù)的特殊性,每次檢索的號碼都可認(rèn)為是隨機的,因此以MDN作為row key的起始可以有效分散數(shù)據(jù),避免熱點的出現(xiàn)。同時,這種row key設(shè)計最大化利用了HBase對row key的排序機制,極大優(yōu)化了單次查詢的效率。
3.3 話單采集子系統(tǒng)實現(xiàn)
Python語言能夠很容易地實現(xiàn)對文本以及文件系統(tǒng)的操作,在字符串格式化、移動文件以及刪除文件上具有很強的能力,同時,Python還擁有眾多第三方庫供調(diào)用,可以實現(xiàn)FTP操作、解壓縮操作以及對HDFS的操作等,本系統(tǒng)使用Python語言實現(xiàn)話單采集子系統(tǒng)。
話單采集子系統(tǒng)以FTP客戶端的方式從信令監(jiān)測系統(tǒng)獲取原始信令,為避免數(shù)據(jù)的重復(fù)下載和遺漏,約定信令監(jiān)測系統(tǒng)將話單數(shù)據(jù)以統(tǒng)一的命名方式存儲在固定的目錄下,話單采集子系統(tǒng)中以話單類型、地理位置以及時間的格式保存下載記錄,通過比較信令采集系統(tǒng)中的文件名與下載記錄來判斷是否有新的數(shù)據(jù)需要下載。話單文件下載后,通過逐行讀取文件并將有效數(shù)據(jù)寫入新文件的方式生成系統(tǒng)使用的話單文件,話單文件寫入完成后即調(diào)用HBase的批量導(dǎo)入功能將數(shù)據(jù)寫入HBase數(shù)據(jù)庫。
3.4 社交圈分析子系統(tǒng)實現(xiàn)
社交圈分析子系統(tǒng)由Java實現(xiàn),其運行流程如下:
(1)接收社交圈分析請求,根據(jù)請求中的內(nèi)容確定第一次查詢所需的查詢條件。;
(2)進行第一次查詢,若為組內(nèi)分析模式,則直接跳至步驟4;若為組外分析模式,則將其中所有人員列為待查人員;
(3)依次對所有待查人員進行數(shù)據(jù)查詢,查詢條件與步驟1類似;
(4)匯總所有數(shù)據(jù),提取數(shù)據(jù)中的人員關(guān)系生成社交圈,社交圈以二維數(shù)據(jù)的形式表達(dá),其中包含人員間的聯(lián)系、聯(lián)系類型以及聯(lián)系次數(shù);
(5)將生成的社交圈輸出至至前端展示子系統(tǒng)。
4 結(jié)論
本文給出了較完整的系統(tǒng)實現(xiàn),通過對分布式技術(shù)的合理利用,以低成本解決了海量數(shù)據(jù)的存儲與分析問題,同時,對第三方信令監(jiān)測平臺的合理利用解決了同類社交圈分析產(chǎn)品數(shù)據(jù)獲取困難的問題。