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