陳重韜 王偉平 孟 丹 崔 甲* 胡 斌
(*中國(guó)科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)應(yīng)用研究中心 北京 100190) (**中國(guó)科學(xué)院大學(xué) 北京 100049) (***中國(guó)科學(xué)院信息工程研究所 北京 100093) (****中國(guó)信息安全測(cè)評(píng)中心 北京 100085)
?
面向海量NetFlow數(shù)據(jù)的存儲(chǔ)和查詢處理方法研究①
陳重韜②******王偉平***孟 丹***崔 甲****胡 斌***
(*中國(guó)科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)應(yīng)用研究中心 北京 100190) (**中國(guó)科學(xué)院大學(xué) 北京 100049) (***中國(guó)科學(xué)院信息工程研究所 北京 100093) (****中國(guó)信息安全測(cè)評(píng)中心 北京 100085)
針對(duì)全國(guó)骨干網(wǎng)高速海量NetFlow數(shù)據(jù)到來(lái)速度快、數(shù)據(jù)量大以及對(duì)所存數(shù)據(jù)進(jìn)行頻繁多維查詢操作的特點(diǎn),提出了一種多維屬性聚簇存儲(chǔ)(MACS)模型。該模型根據(jù)實(shí)際應(yīng)用環(huán)境中查詢的特點(diǎn)對(duì)數(shù)據(jù)進(jìn)行空間分片,以并行加流水的方式對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。此外,為NetFlow提出了一種超多面體的查詢模式。真實(shí)環(huán)境實(shí)驗(yàn)結(jié)果表明,運(yùn)用MACS模型實(shí)現(xiàn)的系統(tǒng)單點(diǎn)數(shù)據(jù)實(shí)時(shí)存儲(chǔ)速度達(dá)到270萬(wàn)條/s,遠(yuǎn)遠(yuǎn)快于其他的數(shù)據(jù)分析系統(tǒng),并且多維屬性查詢的速度優(yōu)于Hive和Impala。
NetFlow, 多維屬性聚簇存儲(chǔ)(MACS)模型, 實(shí)時(shí)數(shù)據(jù)存儲(chǔ), 超多面體
伴隨著信息技術(shù)和網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)絡(luò)安全形勢(shì)日益嚴(yán)峻[1,2]。NetFlow[3]作為收集和監(jiān)控網(wǎng)絡(luò)流數(shù)據(jù)的一種網(wǎng)絡(luò)協(xié)議,被廣泛用于網(wǎng)絡(luò)流量統(tǒng)計(jì)、拒絕服務(wù)監(jiān)控、入侵檢測(cè)等方面[4-7],具有很高的應(yīng)用價(jià)值和實(shí)際意義。目前,國(guó)內(nèi)外在NetFlow數(shù)據(jù)的存儲(chǔ)和分析方面的工作主要面向小規(guī)模網(wǎng)絡(luò),當(dāng)面對(duì)全國(guó)范圍的網(wǎng)絡(luò)時(shí),現(xiàn)有的解決方案均存在問(wèn)題,因此需要對(duì)海量NetFlow數(shù)據(jù)的存儲(chǔ)管理框架進(jìn)行重新設(shè)計(jì)。
本文面向全國(guó)范圍廣域網(wǎng)骨干路由器發(fā)回的海量NetFlow數(shù)據(jù),主要面臨以下挑戰(zhàn):(1)高速寫入。一般區(qū)域數(shù)據(jù)到來(lái)速度可達(dá)到130萬(wàn)條/s,對(duì)數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)提出了很高的要求;(2)數(shù)據(jù)近實(shí)時(shí)可查。由于應(yīng)用場(chǎng)景要求,數(shù)據(jù)由存儲(chǔ)到可查近似實(shí)時(shí),不能有過(guò)高的訪問(wèn)延遲;(3)數(shù)據(jù)海量。現(xiàn)有數(shù)據(jù)針對(duì)全國(guó)各主要省市骨干路由器,每省每天存儲(chǔ)數(shù)據(jù)壓縮后接近1TB,全國(guó)數(shù)據(jù)存儲(chǔ)總量可達(dá)到PB級(jí)。伴隨著網(wǎng)絡(luò)擴(kuò)容,以及各地方路由器的不斷接入,勢(shì)必會(huì)造成數(shù)據(jù)量成倍甚至數(shù)十倍的增長(zhǎng);(4)高頻多維檢索。NetFlow數(shù)據(jù)會(huì)被頻繁的檢索訪問(wèn),其中含有大量同時(shí)對(duì)流記錄內(nèi)不同屬性的篩選類查詢操作,因而需要對(duì)數(shù)據(jù)進(jìn)行有針對(duì)性的組織,保證數(shù)據(jù)檢索能力。
針對(duì)以上挑戰(zhàn),結(jié)合相關(guān)應(yīng)用場(chǎng)景特征,本文提出了一種針對(duì)海量NetFlow數(shù)據(jù)的多維屬性聚簇存儲(chǔ)(multidimensional attributes clustering storage model,MACS)模型,簡(jiǎn)稱MACS模型。該模型根據(jù)現(xiàn)有負(fù)載特征選擇聚簇屬性,通過(guò)對(duì)數(shù)據(jù)進(jìn)行空間切分,有效過(guò)濾檢索數(shù)據(jù),在存儲(chǔ)過(guò)程中采用并行加流水的方式,保證數(shù)據(jù)的快速實(shí)時(shí)存儲(chǔ),并在查詢過(guò)程中,提出以超多面體的方式描述查詢條件,進(jìn)一步貼合場(chǎng)景要求。實(shí)驗(yàn)結(jié)果表明,運(yùn)用MACS模型實(shí)現(xiàn)的系統(tǒng)單點(diǎn)實(shí)時(shí)存儲(chǔ)速度達(dá)到270萬(wàn)條/s,并能提供高效的多維數(shù)據(jù)檢索性能。
傳統(tǒng)的數(shù)據(jù)管理技術(shù)以關(guān)系數(shù)據(jù)庫(kù)為代表,得益于成熟的索引及查詢機(jī)制,其在數(shù)據(jù)查詢方面的優(yōu)勢(shì)非常明顯。但由于關(guān)系數(shù)據(jù)庫(kù)在事務(wù)處理上具有強(qiáng)一致性的要求,導(dǎo)致其犧牲了數(shù)據(jù)加載的性能,并且系統(tǒng)結(jié)構(gòu)難以擴(kuò)展。同時(shí),數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)面向更新而設(shè)計(jì),導(dǎo)致其數(shù)據(jù)的讀寫效率較低,而NetFlow數(shù)據(jù)采用實(shí)時(shí)傳輸并以追加的方式進(jìn)行存儲(chǔ),數(shù)據(jù)存儲(chǔ)之后不再進(jìn)行修改,不需要上述嚴(yán)格的要求。
SILk[8]作為面向NetFlow數(shù)據(jù)的專有系統(tǒng),是由CERT NetSA開發(fā)并應(yīng)用于大型網(wǎng)絡(luò)的安全分析工具。相比于關(guān)系數(shù)據(jù)庫(kù),SILk的存儲(chǔ)格式簡(jiǎn)練,數(shù)據(jù)實(shí)時(shí)存儲(chǔ)性能優(yōu)異,能夠滿足較大流量的加載性能要求。但其只能采用全掃描的方式對(duì)數(shù)據(jù)進(jìn)行處理,這對(duì)于需要進(jìn)行多維度屬性查詢的應(yīng)用來(lái)說(shuō),將造成大量的冗余數(shù)據(jù)掃描,嚴(yán)重影響查詢性能。
以Google為代表的互聯(lián)網(wǎng)公司針對(duì)各自應(yīng)用中的海量數(shù)據(jù)特點(diǎn),提出了一系列的NoSQL分布式數(shù)據(jù)管理技術(shù),成為目前海量數(shù)據(jù)存儲(chǔ)與管理的主流技術(shù)。針對(duì)海量數(shù)據(jù)的存儲(chǔ)問(wèn)題,Google提出了分布式文件系統(tǒng)GFS[9];面向高并發(fā)、低延遲的在線訪問(wèn)類應(yīng)用,Google提出了分布式多維表BigTable[10],提供了基于鍵值的快速檢索能力。Hadoop[11]作為Google Mapreduce[12]和GFS的開源實(shí)現(xiàn),與上層的Hive[13]以及Hbase[14]一起被廣泛地應(yīng)用在Yahoo、Facebook、百度等大型互聯(lián)網(wǎng)公司,取得很好的應(yīng)用效果。但是,這些NoSQL技術(shù)都較為通用,應(yīng)用到管理NetFlow數(shù)據(jù)上,在數(shù)據(jù)存儲(chǔ)效率、加載性能以及查詢性能方面還存在不足。
Hbase作為BigTable的一個(gè)開源實(shí)現(xiàn),以其良好的擴(kuò)展性和快速查詢能力,被廣泛應(yīng)用于結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)。但在面對(duì)海量NetFlow數(shù)據(jù)時(shí),首先,由于Hbase采用列存儲(chǔ),原始數(shù)據(jù)載入到Hbase時(shí)會(huì)有很多關(guān)于列和列簇的信息加入,從而造成嚴(yán)重的數(shù)據(jù)膨脹,直接導(dǎo)致存儲(chǔ)開銷成倍增長(zhǎng);其次,Hbase的數(shù)據(jù)實(shí)時(shí)加載性能遠(yuǎn)低于海量NetFlow數(shù)據(jù)的到來(lái)速度;最后,現(xiàn)有的Hbase只針對(duì)包含主鍵列的查詢擁有良好的篩選能力,對(duì)于其他屬性列的查詢只能通過(guò)全掃描的方式來(lái)實(shí)現(xiàn),雖然針對(duì)多維屬性查詢問(wèn)題,可以通過(guò)在Hbase之上建立二級(jí)索引的方式來(lái)解決,但是這種方式勢(shì)必會(huì)進(jìn)一步影響已經(jīng)很有限的加載性能,并且二級(jí)索引所占用的存儲(chǔ)空間也不容忽視。因此,Hbase的解決方式并不適用于海量NetFlow數(shù)據(jù)。
Hive作為當(dāng)前海量數(shù)據(jù)倉(cāng)庫(kù)通用的解決方案,在面對(duì)海量NetFlow數(shù)據(jù)時(shí),其數(shù)據(jù)加載以及查詢的性能均不能滿足要求。首先Hive作為離線分析系統(tǒng)而設(shè)計(jì),因而并不能提供高效的數(shù)據(jù)實(shí)時(shí)載入性能;其次其查詢的實(shí)質(zhì)是強(qiáng)行全掃描數(shù)據(jù),并不能對(duì)數(shù)據(jù)進(jìn)行有效的篩選。與Hive對(duì)應(yīng)的Impala,受Dremel[15]的啟發(fā)由Cloudera開發(fā),采用類似并行數(shù)據(jù)庫(kù)的大規(guī)模并行處理引擎(MPP),有效地提高了查詢的性能,但底層仍然是以HDFS或Hbase作為存儲(chǔ)介質(zhì),直接導(dǎo)致其實(shí)時(shí)存儲(chǔ)性能不能滿足要求,而且與Hive相似,Impala的數(shù)據(jù)掃描方式也是全掃描,因而多維數(shù)據(jù)篩選類查詢的性能并不十分出色。
綜上所述,傳統(tǒng)的解決方案都基于較小的數(shù)據(jù)集,當(dāng)數(shù)據(jù)規(guī)模達(dá)到TB及以上級(jí)別時(shí),均存在問(wèn)題,而目前新型的通用海量數(shù)據(jù)解決方案又不能滿足NetFlow數(shù)據(jù)對(duì)于實(shí)時(shí)存儲(chǔ)以及多維度屬性檢索性能的基本要求,因而需要研究面向海量NetFlow數(shù)據(jù)存儲(chǔ)與管理的新型體系結(jié)構(gòu)。
2.1 模型定義
給定一個(gè)具有n維屬性的關(guān)系R(A1,A2,…,An)∈D1(D2(…(Dn,其中Di為屬性Ai的定義域,關(guān)系R被視為n維數(shù)據(jù)空間S=D1×D2×…×Dn的一個(gè)子集。多維聚簇存儲(chǔ)模型首先從n維屬性中選定一個(gè)或多個(gè)屬性,針對(duì)每一維選定的屬性進(jìn)行劃分,最終將空間S劃分為若干子空間,原則是使R在每個(gè)子空間中具有近似相等的元組數(shù)。關(guān)系R即被劃分成若干近似相等的子空間。依據(jù)上述描述,MACS模型即選擇數(shù)據(jù)記錄的某個(gè)或某幾個(gè)屬性對(duì)整體數(shù)據(jù)進(jìn)行空間切分,將海量數(shù)據(jù)劃分到不同的邏輯區(qū)域內(nèi)存儲(chǔ)。
下面以一個(gè)例子來(lái)說(shuō)明多維屬性聚簇模型在數(shù)據(jù)的存儲(chǔ)和查詢過(guò)程中所起到的作用。如圖1所示在3個(gè)維度上做空間切分。對(duì)于值域范圍內(nèi)任意一條網(wǎng)絡(luò)流記錄所對(duì)應(yīng)的3維屬性的值,都可以在此空間內(nèi)找到唯一的一塊子空間與之對(duì)應(yīng)。在數(shù)據(jù)存儲(chǔ)過(guò)程中,隨著流數(shù)據(jù)的不斷到來(lái),依據(jù)模型中對(duì)于各個(gè)屬性的劃分規(guī)則,將逐漸填充相應(yīng)的空間。而根據(jù)已有規(guī)則查找數(shù)據(jù)的過(guò)程與存儲(chǔ)過(guò)程相似,依據(jù)查詢條件得到一個(gè)或多個(gè)子空間作為候選集,然后對(duì)候選集內(nèi)的數(shù)據(jù)進(jìn)行篩選查找,最終得到查詢結(jié)果。例如查找的一條記錄Rec的屬性滿足:time1 圖1 三維空間聚簇存儲(chǔ)模型邏輯示意圖 2.2 模型建立 聚簇屬性選擇的好壞將直接影響到查詢效率,本文通過(guò)構(gòu)建屬性頻度關(guān)聯(lián)矩陣并統(tǒng)計(jì)屬性整體出現(xiàn)頻率的方式來(lái)選取聚簇屬性。作為準(zhǔn)備,需要統(tǒng)計(jì)查詢負(fù)載信息,主要包括應(yīng)用環(huán)境中常用的查詢及其頻度、查詢中涉及的篩選類限制屬性,算法中涉及到的符號(hào)描述如表1所示。 表1 聚簇屬性選擇算法輸入符號(hào)描述 定義1關(guān)系R的屬性頻度關(guān)聯(lián)矩陣的行表示作用在該關(guān)系上的不同查詢,列表示關(guān)系中的所有屬性,矩陣中若查詢Qi中涉及Rj屬性,則該位置取值為fi,反之,取值為0。 聚簇屬性選取的第一步將根據(jù)負(fù)載統(tǒng)計(jì)信息依據(jù)定義1中描述構(gòu)建屬性頻度關(guān)聯(lián)矩陣,如表2所示,Q1包含屬性A1和A3,則矩陣中相應(yīng)的值為Q1的出現(xiàn)頻度f(wàn)1,以此類推;第二步基于該矩陣統(tǒng)計(jì)每一維屬性出現(xiàn)的頻度,A1的屬性出現(xiàn)頻度即為相應(yīng)矩陣值求和;最后根據(jù)設(shè)置的閾值得到聚簇屬性集合。關(guān)于閾值的設(shè)置,會(huì)根據(jù)應(yīng)用場(chǎng)景中數(shù)據(jù)量的大小進(jìn)行動(dòng)態(tài)的變化。 表2 屬性頻度關(guān)聯(lián)矩陣示例 針對(duì)NetFlow數(shù)據(jù)到來(lái)速度快的特點(diǎn),并充分利用數(shù)據(jù)服務(wù)器的計(jì)算資源,數(shù)據(jù)服務(wù)器采用并行加流水的方法來(lái)保證數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)性能。數(shù)據(jù)存儲(chǔ)引擎采取多線程壓縮,最終多線程寫盤,并且壓縮與寫盤過(guò)程分開的策略,其中壓縮采用zlib算法進(jìn)行。數(shù)據(jù)存儲(chǔ)引擎在接收到數(shù)據(jù)后,將數(shù)據(jù)按照不同的聚簇屬性區(qū)間進(jìn)行劃分,并添加到內(nèi)存相應(yīng)的一級(jí)緩沖區(qū)中,當(dāng)緩存的數(shù)據(jù)量達(dá)到設(shè)定的閾值時(shí),相應(yīng)的數(shù)據(jù)存儲(chǔ)線程會(huì)將緩存的數(shù)據(jù)進(jìn)行壓縮,并將壓縮塊寫入到指定的二級(jí)緩沖區(qū)中,最終當(dāng)二級(jí)緩沖區(qū)達(dá)到閾值之后,以追加的方式寫到相應(yīng)的數(shù)據(jù)文件中。圖2給出了多維數(shù)據(jù)聚簇存儲(chǔ)執(zhí)行框架。 采用第二級(jí)緩沖區(qū)的目的是盡量保證數(shù)據(jù)的順序?qū)懭?。磁盤順序讀寫的性能遠(yuǎn)遠(yuǎn)高于隨機(jī)讀寫的性能,因而在數(shù)據(jù)存儲(chǔ)的過(guò)程中需盡量保證數(shù)據(jù)的順序?qū)懭搿S捎诒疚膶?duì)MACS模型的實(shí)現(xiàn)需要存儲(chǔ)大量的文件,在數(shù)據(jù)寫盤過(guò)程中會(huì)同時(shí)打開多個(gè)文件進(jìn)行后追加寫,使得數(shù)據(jù)隨機(jī)寫入的概率增加。雖然現(xiàn)有的文件系統(tǒng)本身有預(yù)分配策略,來(lái)盡量保證數(shù)據(jù)的順序?qū)懭?,但是該策略只在單線程寫操作的情況下效果明顯,對(duì)于多線程同時(shí)寫多個(gè)文件,尤其是每次寫數(shù)據(jù)量都很小的情況下并不能保證數(shù)據(jù)的連續(xù)性,從而嚴(yán)重影響數(shù)據(jù)的讀寫性能。因此我們采用增加寫操作數(shù)據(jù)量的方式來(lái)盡量保證數(shù)據(jù)順序?qū)懭氪疟P,同時(shí)也會(huì)根據(jù)磁盤掛載的情況調(diào)整寫隊(duì)列的數(shù)量。 圖2 多維數(shù)據(jù)聚簇存儲(chǔ)執(zhí)行框架 為進(jìn)一步提高數(shù)據(jù)的過(guò)濾能力,本研究對(duì)文件內(nèi)部數(shù)據(jù)采用一種新的方式進(jìn)行組織,如圖3所示。文件由數(shù)據(jù)頭和數(shù)據(jù)塊兩部分組成,數(shù)據(jù)頭用來(lái)記錄數(shù)據(jù)塊的基本信息,數(shù)據(jù)塊內(nèi)部則是一定時(shí)間范圍內(nèi)的流記錄的集合。數(shù)據(jù)頭內(nèi)部TimeRange代表所對(duì)應(yīng)的數(shù)據(jù)塊的時(shí)間跨度,offset記錄該數(shù)據(jù)塊在文件中的位置信息,F(xiàn)ile Head Offset記錄數(shù)據(jù)頭在文件中的位置。每個(gè)文件都包含若干個(gè)數(shù)據(jù)塊,在寫入過(guò)程中每當(dāng)緩存達(dá)到閾值時(shí),便將處理后的數(shù)據(jù)塊以后追加的形式寫入到相應(yīng)的數(shù)據(jù)文件中。文件頭則一直保存在內(nèi)存中,每當(dāng)有新的數(shù)據(jù)塊完成寫入時(shí),便在文件頭中添加相應(yīng)信息。直到文件關(guān)閉,數(shù)據(jù)頭才會(huì)以后追加的方式寫入到文件中,并同時(shí)更新File Head Offset信息。 圖3 文件內(nèi)部結(jié)果示意圖 在進(jìn)行查詢的過(guò)程中,會(huì)先讀取文件頭信息,查找符合查詢條件的TimeRange,并依據(jù)對(duì)應(yīng)的位置信息讀取相應(yīng)的數(shù)據(jù)塊。通過(guò)對(duì)文件進(jìn)行如上組織,可以進(jìn)一步減少查詢中讀取的數(shù)據(jù)量。 本文所面向的應(yīng)用場(chǎng)景為一個(gè)跨區(qū)域環(huán)境,查詢系統(tǒng)采用兩級(jí)分布式查詢模型,如圖4所示。 圖4 兩級(jí)查詢模型示意圖 一級(jí)查詢服務(wù)根據(jù)查詢請(qǐng)求生成查詢計(jì)劃,通過(guò)查找元數(shù)據(jù)信息,直接將查詢下發(fā)給相應(yīng)的二級(jí)查詢服務(wù),最終由二級(jí)查詢服務(wù)進(jìn)行數(shù)據(jù)的掃描和處理。二級(jí)查詢服務(wù)會(huì)根據(jù)查詢的類型采用不同的結(jié)果回傳方式,若為普通篩選類查詢則進(jìn)行實(shí)時(shí)分段回傳,若為聚集排序等復(fù)雜查詢,則先對(duì)中間結(jié)果進(jìn)行預(yù)處理,之后返回給一級(jí)查詢服務(wù)。一級(jí)查詢服務(wù)也會(huì)針對(duì)不同的查詢類型進(jìn)行結(jié)果處理,包括分組、排序等,最終將查詢結(jié)果返回。 在二級(jí)服務(wù)查詢的過(guò)程中,依據(jù)場(chǎng)景特點(diǎn),定義了超多面體模型,以超多面體的并、交、差來(lái)描述查詢條件,以快速定位數(shù)據(jù)文件。 假設(shè)查詢涉及關(guān)系的維度為N,那么這N維屬性便構(gòu)成了一個(gè)N維空間。任意一條值域空間范圍內(nèi)的流記錄Rec:(r1, r2,…, rn),都可以看做此N維空間中的一個(gè)點(diǎn)。同理,查詢條件都可轉(zhuǎn)化為此N維空間中的一個(gè)或多個(gè)超多面體,而查找滿足查詢條件的流記錄,就等價(jià)于:(1)找到查詢條件所對(duì)應(yīng)的超多面體集合;(2)找到該集合中所包含的點(diǎn)。圖5給出了一個(gè)查詢條件轉(zhuǎn)化示例。 圖5 超多面體空間查詢示例 圖5中所示查詢條件轉(zhuǎn)化為3個(gè)超多面體的并:Cond1∪Cond2∪Cond3,其中: Cond1等價(jià)于:1≤x≤5∩7≤y≤11 Cond2等價(jià)于:3≤x≤11∩5≤y≤9 Cond3等價(jià)于:14≤x≤17∩1≤y≤13 用超多面體來(lái)表達(dá)的查詢條件具有析取范式的形式:Cond1∪Cond2∪…∪Condm,其中每個(gè)超多面體Condi都是一系列屬性條件的合取式:A1∩A2∩…∩An,這里每個(gè)屬性條件Aj決定了Condi的一條邊,即流記錄Rec若包含于Condi,那么它在任意第j個(gè)查詢屬性上必須滿足的條件。由于任何邏輯表達(dá)式都存在對(duì)應(yīng)的析取范式,因此對(duì)于任意的查詢條件,也總能找到與之等價(jià)的一組超多面體。用超多面體的方式描述查詢條件,不僅直觀,而且合乎NetFlow數(shù)據(jù)查詢條件的常見方式。 以MACS模型為基礎(chǔ),采用上文提到的存儲(chǔ)和查詢模式,本研究實(shí)現(xiàn)了在線系統(tǒng)SIEVE,根據(jù)場(chǎng)景要求,SIEVE為跨區(qū)域的系統(tǒng),已于2012年上線運(yùn)行,本節(jié)所涉及的測(cè)試均采用SIEVE系統(tǒng)來(lái)進(jìn)行。測(cè)試平臺(tái)由9臺(tái)服務(wù)器組成,服務(wù)器硬件為每個(gè)節(jié)點(diǎn)4個(gè)頻率為2.2GHz八核CPU,32GB內(nèi)存和1TB的存儲(chǔ)容量。節(jié)點(diǎn)運(yùn)行的操作系統(tǒng)為Red Hat 6.2,內(nèi)核版本號(hào)2.6.32,節(jié)點(diǎn)間通過(guò)千兆網(wǎng)互連。其中,1臺(tái)節(jié)點(diǎn)作為SIEVE的查詢控制節(jié)點(diǎn),同時(shí)作為Hadoop集群的master節(jié)點(diǎn),其余8臺(tái)節(jié)點(diǎn)作為數(shù)據(jù)節(jié)點(diǎn)。實(shí)驗(yàn)中運(yùn)行的Java環(huán)境為1.7.0,使用的Hadoop版本為2.6.0,Hive版本為1.1.0,Impala版本為2.3.0,Hbase版本為0.96.12,存儲(chǔ)在HDFS上的文件副本數(shù)為3,Hive以及Impala所涉及數(shù)據(jù)均采用Parquet的文件格式進(jìn)行存儲(chǔ)。SIEVE系統(tǒng)采用C++實(shí)現(xiàn),測(cè)試采用的數(shù)據(jù)均來(lái)自于實(shí)際線上環(huán)境。SIEVE默認(rèn)時(shí)間粒度設(shè)置1h,選取源IP、目的IP作為聚簇存儲(chǔ)屬性,而在每個(gè)維度上分為4個(gè)分片。 5.1 數(shù)據(jù)壓縮比 本節(jié)測(cè)試數(shù)據(jù)的存儲(chǔ)效率,方法為統(tǒng)計(jì)使用多維屬性聚簇模型存儲(chǔ)的數(shù)據(jù)所占空間大小以及數(shù)據(jù)中包含的NetFlow數(shù)據(jù)條數(shù),即得到壓縮后每條記錄所占空間大小。經(jīng)測(cè)試,壓縮后單條數(shù)據(jù)大小約為17個(gè)字節(jié),而原始數(shù)據(jù)單條數(shù)據(jù)大小為48個(gè)字節(jié),壓縮比約為3:1,壓縮效果明顯。有如此明顯的壓縮效率主要原因是數(shù)據(jù)經(jīng)過(guò)MACS模型組織后,數(shù)據(jù)塊內(nèi)均為相近的數(shù)據(jù),并且最終采用二進(jìn)制方式進(jìn)行存儲(chǔ)。 5.2 實(shí)時(shí)存儲(chǔ)速率 對(duì)比SIEVE、Hive以及Hbase 3種數(shù)據(jù)存儲(chǔ)方式的數(shù)據(jù)加載性能,其中Hive采用批量加載的方式,而SIEVE、Hbase采用在線實(shí)時(shí)加載的方式,比較三者的加載完成時(shí)間。圖6給出了數(shù)據(jù)加載平均時(shí)間的對(duì)比。 圖6 數(shù)據(jù)實(shí)時(shí)存儲(chǔ)速度 圖6中本文存儲(chǔ)約26.7億條數(shù)據(jù),來(lái)測(cè)試數(shù)據(jù)存儲(chǔ)速率,其中縱坐標(biāo)為完成數(shù)據(jù)加載所需時(shí)間,由于測(cè)試環(huán)境為千兆以太網(wǎng),因而SIEVE采用一臺(tái)數(shù)據(jù)服務(wù)器進(jìn)行接收。本研究可知,SIEVE的數(shù)據(jù)實(shí)時(shí)存儲(chǔ)速度最快,單點(diǎn)接收速度大概為270萬(wàn)條/s,基本接近了千兆以太網(wǎng)卡的流速上限,遠(yuǎn)高于Hive和Hbase。 5.3 查詢性能 對(duì)比SIEVE、Hive以及Impala的查詢性能。實(shí)驗(yàn)中包括應(yīng)用環(huán)境中最常出現(xiàn)的點(diǎn)查詢以及聚集排序類查詢,點(diǎn)查詢的查詢語(yǔ)句形式為“select* from table where sip=*** and dip=***”,而聚集排序類查詢的查詢語(yǔ)句形式為“select sip,dip,dport,sum(bytes) as sum_bytes from table where sip=*** and dip=*** group by sip,dip,dport order by sum_bytes desc”。圖7給出了查詢執(zhí)行的平均時(shí)間對(duì)比。 圖7 查詢性能對(duì)比測(cè)試 圖7中本文對(duì)約26.7億條數(shù)據(jù)進(jìn)行查詢,測(cè)試查詢完成時(shí)間,橫坐標(biāo)為查詢類型,其中Q1、Q2為點(diǎn)查詢,Q3、Q4、Q5為聚集排序類查詢,Q1、Q3查詢條件中包括對(duì)源IP 、目的IP的篩選限制,Q2、Q4、Q5查詢條件僅包括對(duì)目的IP的篩選限制,Q4、Q5區(qū)別在于最終結(jié)果列的數(shù)量,Q5僅對(duì)兩維數(shù)據(jù)進(jìn)行統(tǒng)計(jì)并最終排序。本研究可知,SIEVE具有最好的查詢性能。對(duì)于Hive和Impala,雖然Parquet存儲(chǔ)格式中有關(guān)于block內(nèi)數(shù)據(jù)列最大最小值的統(tǒng)計(jì)信息,但是由于NetFlow單條記錄小,導(dǎo)致每個(gè)數(shù)據(jù)塊中所含的數(shù)據(jù)條數(shù)多,而IP分布本身具有分散的特性,這就使得統(tǒng)計(jì)信息的作用有限,最終仍需要掃描絕大部分的數(shù)據(jù),因而執(zhí)行時(shí)間均較長(zhǎng),尤其是Hive在執(zhí)行聚集排序類操作時(shí)需要啟動(dòng)兩個(gè)MapReduce作業(yè)來(lái)實(shí)現(xiàn),導(dǎo)致耗費(fèi)時(shí)間最長(zhǎng)。Q5在執(zhí)行時(shí)間上比同樣進(jìn)行目的IP篩選條件的Q4更快是因?yàn)镻arquet存儲(chǔ)格式采用的是純列存,因而查詢結(jié)果中涉及的數(shù)據(jù)列越少,查詢性能便越高。 圖8中本文對(duì)不同選擇率的查詢性能進(jìn)行比較,其中橫坐標(biāo)為點(diǎn)查詢的查詢結(jié)果條數(shù),同時(shí)也為聚集排序類查詢的符合條件的原始數(shù)據(jù)條數(shù),查詢條件中包括對(duì)源IP 、目的IP的篩選限制。本研究可知,SIEVE在不同的數(shù)據(jù)選擇率下具有穩(wěn)定且優(yōu)越的查詢性能。而Hive和Impala在不同選擇率下查詢也沒有太大的波動(dòng),進(jìn)一步說(shuō)明Parquet存儲(chǔ)格式的統(tǒng)計(jì)信息優(yōu)化在本場(chǎng)景中作用有限。 圖8 查詢性能對(duì)比測(cè)試 5.4 系統(tǒng)擴(kuò)展性 本節(jié)固定對(duì)約26.7億條數(shù)據(jù)進(jìn)行查詢,通過(guò)增加機(jī)器的數(shù)量,查看查詢時(shí)間變化趨勢(shì),如圖9所示,由5.3節(jié)可知點(diǎn)查詢與聚集排序查詢性能表現(xiàn)一致,因而本節(jié)僅選取點(diǎn)查詢進(jìn)行測(cè)試。本研究可知,通過(guò)增加節(jié)點(diǎn)的數(shù)量,系統(tǒng)的查詢性能近似線性提高。在線環(huán)境已運(yùn)行超過(guò)100臺(tái)節(jié)點(diǎn),運(yùn)行狀況良好。 圖9 系統(tǒng)擴(kuò)展性測(cè)試 面對(duì)快速到來(lái)的海量NetFlow流數(shù)據(jù)給存儲(chǔ)和查詢分析帶來(lái)的挑戰(zhàn),本文提出了多維屬性聚簇存儲(chǔ)(MACS)模型。它通過(guò)分析現(xiàn)有負(fù)載查詢特點(diǎn),合理選擇一個(gè)或多個(gè)屬性作為聚簇屬性,劃分?jǐn)?shù)據(jù)空間,從而減少數(shù)據(jù)處理過(guò)程中待處理的數(shù)據(jù)量,通過(guò)并行加流水的方式,充分利用各節(jié)點(diǎn)的計(jì)算和存儲(chǔ)資源,保證每一維數(shù)據(jù)的實(shí)時(shí)快速存儲(chǔ),并在查詢中定義了超多面體的查詢描述方式,使之更貼近應(yīng)用場(chǎng)景,更加直觀和高效地表示對(duì)于NetFLow數(shù)據(jù)的查詢操作。實(shí)驗(yàn)結(jié)果表明,MACS模型實(shí)現(xiàn)的系統(tǒng)單點(diǎn)實(shí)時(shí)存儲(chǔ)性能達(dá)到270萬(wàn)條/s,并且多維數(shù)據(jù)查詢能力也優(yōu)于Hive和Impala,能夠提供穩(wěn)定持續(xù)的查詢服務(wù)。未來(lái)我們將研究新的文件組織形式來(lái)作為MACS模型的實(shí)現(xiàn),進(jìn)一步保證數(shù)據(jù)在磁盤上的順序讀寫,保證讀寫性能,此外還將研究MACS模型在Hive、Impala等查詢分析系統(tǒng)中的應(yīng)用。 [1] Cncert/Cc. 2013年我國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全態(tài)勢(shì)綜述. http://www.cert.org.cn/:國(guó)家互聯(lián)網(wǎng)應(yīng)急中心,2014 [2] Cncert/Cc. 2013年中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告. 北京:人民郵電出版社, 2014 [3] Li B, Springer J, Bebis G, et al. A survey of network flow applications.JournalofNetworkandComputerApplications, 2013, 36(36):567-581 [4] Wang Z, Wang X. NetFlow based intrusion detection system. In: Proceedings of the 2008 International Conference on MultiMedia and Information Technology, Three Gorges, China, 2008. 825-828 [5] 吳斌, 丘勁松, 金連甫. 基于NetFlow的流量計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 計(jì)算機(jī)工程, 2004, 30(7):189-191 [6] 陳寧, 徐同閣. NetFlow流量采集與存儲(chǔ)技術(shù)的研究實(shí)現(xiàn). 計(jì)算機(jī)應(yīng)用研究, 2008, 25(2):559-561 [7] Liu B, Lin C, Ruan D H, et al. Netfiow based flow analysis and monitor. In:Proceedings of the 2006 IEEE International Conference on Communication Technology, Vienna, Austria, 2006. 1-4 [8] Gates C, Collins M, Duggan M, et al. More netflow tools for performance and security. In: Proceedings of USENIX Conference on System Administration, Atlanta, USA, 2004. 121-132 [9] Ghemawat S, Gobioff H, Leung S. File and storage systems: the google file system.AcmSymposiumonOperatingSystemsPrinciplesBoltonLanding, 2003, 37:29-43 [10] Chang F, Dean J, Ghemawat S, et al. Bigtable: A distributed storage system for structured data.ACMTransactionsonComputerSystems, 2008, 26(2): 205-218 [11] Bialecki A,Cafarella M.Hadoop:A Framework for Running Applications on Large Clusters Built of Commodity Hardware,http://lucene.apache.org/hadoop: Apache, 2008 [12] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters.CommunicationsofTheACM, 2008, 51(1): 107-113 [13] Thusoo A, Sarma J S, Jain N, et al. Hive: a warehousing solution over a map-reduce framework.ProceedingsoftheVldbEndowment, 2009, 2(2):1626-1629 [14] George L. HBase: The Definitive Guide. Sebastopol, USA: O'Reilly Media, 2011 [15] Melnik S, Gubarev A, Long J J, et al. Dremel: Interactive analysis of web-scale datasets.CommunicationsoftheAcm, 2011, 3(12):114-123 Research on storage and query processing for massive NetFlow data Chen Zhongtao******,Wang Weiping***, Meng Dan***, Cui Jia****, Hu Bin*** (*Center of Computer Application Research, Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190) (**University of Chinese Academy of Sciences, Beijing 100049) (***Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100093) (****China Information Technology Security Evaluation Center, Beijing 100085) Considering that China backbone network’s NetFlow data has the features of high arrival rate, large amount and need of frequent multidimensional query operation, the study proposed a multidimensional attributes clustering storage (MACS) model. According to the properties of real applicable queries, the proposed MACS model conducts space partition on NetFlow data, and stores the data in the way of parallel pipelining. Moreover, a hyper-polyhedron query mode for NetFlow data was presented. The experiments performed in real application environments show that the real time data storing rate of a single system realized with the model can achieve the storing rate up to 2.7 million records per second, which is more faster than all the other systems. Especially, the speed of the proposed multidimensional query is faster than Hive and Impala. NetFlow, multidimensional attributes clustering storage (MACS) model, real time data storage, super polyhedron 10.3772/j.issn.1002-0470.2016.06.003 ①國(guó)家科技支撐計(jì)劃(2012BAH46B03),國(guó)家自然科學(xué)基金(61402473),核高基(2013ZX01039-002-001-001)和中國(guó)科學(xué)院先導(dǎo)專項(xiàng)(XDA06030200)資助項(xiàng)目。 2016-03-29) ②男,1986年生,博士生;研究方向:海量數(shù)據(jù)的存儲(chǔ)與處理;聯(lián)系人,E-mail: chenzhongtao@ncic.ac.cn3 存儲(chǔ)模式
4 查詢模式
5 實(shí)驗(yàn)結(jié)果與分析
6 結(jié) 論