国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向DNS日志的MapReduce性能優(yōu)化技術(shù)研究

2018-05-23 11:46:20劉鶴煜張棪楊興華崔華俊譚倩
關(guān)鍵詞:性能優(yōu)化

劉鶴煜 張棪 楊興華 崔華俊 譚倩

摘 要: DNS日志是互聯(lián)網(wǎng)中重要的訪問日志,數(shù)量巨大且承載著大量信息,需要借助大數(shù)據(jù)技術(shù)進(jìn)行處理和分析。現(xiàn)網(wǎng)DNS日志數(shù)據(jù)量大,且數(shù)據(jù)傾斜現(xiàn)象嚴(yán)重,對(duì)MapReduce的性能有較為嚴(yán)重的影響?;谏鲜鰡栴},采用小文件合并方法優(yōu)化分片,緩解Map端的數(shù)據(jù)傾斜問題,并實(shí)現(xiàn)動(dòng)態(tài)設(shè)置分片大小,提高M(jìn)apReduce作業(yè)執(zhí)行效率。該方法有效均衡了Map任務(wù)的負(fù)載,從而提高了數(shù)據(jù)傾斜情況下的MapReduce作業(yè)的執(zhí)行效率和資源利用率。實(shí)驗(yàn)表明,使用該方法可以有效縮短MapReduce作業(yè)的執(zhí)行時(shí)間。

關(guān)鍵詞: DNS日志;數(shù)據(jù)傾斜;MapReduce;性能優(yōu)化

Abstract:DNS log is important access log of the Internet which are large in number meanwhile carries a large amount of information. DNS log could be processed and analyzed with big data technologies. In the actual network the amount of DNS log is large and the data is skewed seriously. These characteristics of DNS logs have a serious impact on the performance of MapReduce. Based on the above problems small file merging method is used to optimize slipt process of MapReduce and alleviate the data skew of the Map end. Moreover this method realizes setting split size dynamically and improves the efficiency of MapReduce execution. This method balances the load of Map tasks effectively and improves the execution efficiency of MapReduce job and resource utilization ratio under data skew. Experiments show that this method can effectively decrease the execution time of MapReduce jobs.

Key words: DNS log;data skew;MapReduce;performance optimization

引言

域名系統(tǒng)(Domain Name System,DNS)是一個(gè)分布式數(shù)據(jù)庫,主要實(shí)現(xiàn)了域名和IP地址之間的映射[1-2]。DNS解析過程中產(chǎn)生大量日志,在某運(yùn)營商的網(wǎng)絡(luò)中,每天可以產(chǎn)生幾十TB級(jí)的DNS日志,需要使用大數(shù)據(jù)技術(shù)對(duì)DNS日志進(jìn)行處理和分析。在此,研究選擇Hadoop平臺(tái)[3]和MapReduce編程模型[4]對(duì)DNS日志展開探討與研發(fā)。其中,Hadoop是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),核心是分布式文件系統(tǒng)(HDFS)[5]和MapReduce編程模型。

現(xiàn)網(wǎng)DNS日志具有數(shù)據(jù)量大、數(shù)據(jù)傾斜現(xiàn)象嚴(yán)重的特點(diǎn)。數(shù)據(jù)傾斜現(xiàn)象會(huì)導(dǎo)致MapReduce在進(jìn)行DNS日志處理的過程中出現(xiàn)相應(yīng)的數(shù)據(jù)傾斜問題。MapReduce中的數(shù)據(jù)傾斜問題分為Map端的數(shù)據(jù)傾斜和Reduce端的數(shù)據(jù)傾斜[6-7]。Map端數(shù)據(jù)傾斜是由輸入數(shù)據(jù)分布不均勻?qū)е碌?,Reduce端數(shù)據(jù)傾斜是由鍵值對(duì)分布不均勻?qū)е碌摹?/p>

為了解決Map端的數(shù)據(jù)傾斜問題,本文針對(duì)DNS日志處理過程中輸入數(shù)據(jù)分布不均勻的情況提出了MapReduce作業(yè)優(yōu)化,實(shí)現(xiàn)了小文件合并方法,還能夠動(dòng)態(tài)設(shè)計(jì)確定分片大小。通過實(shí)驗(yàn)對(duì)比發(fā)現(xiàn)優(yōu)化的小文件合并方法比MapReduce默認(rèn)的方法效果更好,并且能夠?qū)NS日志業(yè)務(wù)處理時(shí)間縮短30%以上。

1 MapReduce背景

MapReduce是一個(gè)可用于并行運(yùn)算的編程模型,分為Map和Reduce兩個(gè)階段。在執(zhí)行過程中,MapReduce首先對(duì)輸入數(shù)據(jù)進(jìn)行分片(split),每個(gè)分片由一個(gè)Map任務(wù)來加工操作。經(jīng)過Map任務(wù)處理的結(jié)果會(huì)通過分區(qū)函數(shù)的分區(qū)(Partition)運(yùn)算后,并將不同分區(qū)交給相應(yīng)Reduce任務(wù)處理,全部Reduce任務(wù)執(zhí)行過后,將結(jié)果存儲(chǔ)在HDFS上。用戶可以根據(jù)需求只設(shè)置Map任務(wù),而不設(shè)置Reduce任務(wù)。

1.1 MapReduce分片規(guī)則

(1)確定分片大小。數(shù)學(xué)公式可表述如下:

其中,minimumSize表示最小分片大小,默認(rèn)為1字節(jié);maximumSize表示最大分片大小,默認(rèn)為Java long類型的最大值;blockSize表示HDFS的數(shù)據(jù)塊大小,默認(rèn)為128 MB。默認(rèn)情況下,MapReduce作業(yè)以bolckSize作為分片大小對(duì)輸入數(shù)據(jù)進(jìn)行分片。

(2)分片規(guī)則。文件大小不足splitSize時(shí),將該文件作為一個(gè)單獨(dú)的分片;遇到超過splitSize的文件時(shí),如果可拆分,則按splitSize進(jìn)行拆分;如果不可拆分,則作為一個(gè)單獨(dú)分片。

1.2 MapReduce分區(qū)規(guī)則

MapReduce作業(yè)會(huì)調(diào)用分區(qū)函數(shù)(patitioner)對(duì)Map的輸出進(jìn)行劃分,默認(rèn)情況下使用hash分區(qū)函數(shù),其規(guī)則如下:

其中,k是鍵;hash(k)是鍵的hash值;r是Reduce數(shù)目。通過這個(gè)方法可以將Map的中間結(jié)果按照鍵進(jìn)行劃分,交給指定的Reduce進(jìn)行處理。

2 DNS日志業(yè)務(wù)邏輯

在現(xiàn)網(wǎng)業(yè)務(wù)需求中,需要對(duì)DNS日志進(jìn)行處理和分析。原始的DNS日志中定義有源IP、域名、目的IP、采集時(shí)間、DNS解析類型共5個(gè)字段,通過對(duì)這些字段的統(tǒng)計(jì)分析可以對(duì)域名表征的互聯(lián)網(wǎng)資源加以分析和監(jiān)測,其處理流程包括數(shù)據(jù)清洗、輕度匯總、主題匯總、業(yè)務(wù)指標(biāo)計(jì)算。

其中,數(shù)據(jù)清洗主要是對(duì)DNS日志進(jìn)行數(shù)據(jù)校驗(yàn),檢查數(shù)據(jù)完整以及數(shù)據(jù)合法性。輕度匯總主要是按照業(yè)務(wù)需求對(duì)DNS日志字段進(jìn)行處理,并對(duì)解析次數(shù)提供初步匯總統(tǒng)計(jì)。業(yè)務(wù)指標(biāo)的計(jì)算需要利用輕度匯總或者主題匯總的結(jié)果,并結(jié)合業(yè)務(wù)的實(shí)際意義來獲得處理輸出。研究中,重點(diǎn)涉及有網(wǎng)內(nèi)解析占比、熱點(diǎn)網(wǎng)站分析等業(yè)務(wù)指標(biāo)。

在DNS日志的處理流程中,每個(gè)作業(yè)的Map階段擬將實(shí)現(xiàn)字段的處理,如合法性檢查、截取字符串、根據(jù)精細(xì)域名獲取泛域名等。在Reduce階段,則旨在完成解析次數(shù)匯總統(tǒng)計(jì)、2張表的等值連接等。

3.1 DNS日志特性

現(xiàn)網(wǎng)DNS日志具有如下特性:

(1)數(shù)據(jù)量巨大。在運(yùn)營商網(wǎng)絡(luò)中,用戶訪問互聯(lián)網(wǎng)產(chǎn)生的DNS日志總量約為每日幾十TB,且仍在不斷增長。

(2)數(shù)據(jù)傾斜現(xiàn)象嚴(yán)重。數(shù)據(jù)傾斜分為數(shù)據(jù)量分布不均勻和日志內(nèi)容分布不均勻。在數(shù)據(jù)量方面,DNS日志文件容量差異很大,存在海量小文件。原始DNS日志中,超過80%的文件小于40 MB;清洗后的DNS日志中有60%~70%的文件小于128 MB,1%的文件大小超過1 GB。在日志內(nèi)容方面,不同網(wǎng)站、不同域名對(duì)應(yīng)的記錄數(shù)不同,并且相差很大。某大型網(wǎng)站解析次數(shù)在總解析次數(shù)中占比超過25%,少數(shù)幾個(gè)大型網(wǎng)站解析次數(shù)之和超過40%。

3.2 數(shù)據(jù)傾斜問題

數(shù)據(jù)傾斜現(xiàn)象使Map端和Reduce端出現(xiàn)資源利用不充分、作業(yè)執(zhí)行時(shí)間長等問題。而且,輸入數(shù)據(jù)分配不均,每個(gè)Map處理的數(shù)據(jù)量相差較大,會(huì)導(dǎo)致Map端數(shù)據(jù)傾斜;輸入數(shù)據(jù)的鍵值對(duì)分布不均,在分區(qū)過程中不能勻量分配到每個(gè)Reduce任務(wù),從而導(dǎo)致Reduce端數(shù)據(jù)傾斜。本文將著重討論Map端數(shù)據(jù)傾斜問題的解決方案。分析DNS日志特性可知,在數(shù)據(jù)清洗和輕度匯總階段,輸入數(shù)據(jù)的文件大小分布不均,每個(gè)Map任務(wù)處理的數(shù)據(jù)量相差很大,出現(xiàn)Map端的數(shù)據(jù)傾斜問題。

數(shù)據(jù)清洗作業(yè)的輸入數(shù)據(jù)是.gz格式。在處理.gz文件時(shí) MapReduce不能對(duì).gz文件來劃定分片,只能將完整的.gz文件作為一個(gè)分片交給一個(gè)Map任務(wù)進(jìn)行統(tǒng)籌操作。該作業(yè)的分片結(jié)果是大量Map任務(wù)處理數(shù)據(jù)量很小的分片,但其余Map任務(wù)需要處理數(shù)據(jù)量大的分片。

由DNS日志業(yè)務(wù)邏輯可知,數(shù)據(jù)清洗作業(yè)只有Map階段,該作業(yè)輸出結(jié)果與輸入文件個(gè)數(shù)和數(shù)據(jù)量分布均勻與否相關(guān),該結(jié)果也將作為輕度匯總作業(yè)的輸入,得到進(jìn)一步處理。

輕度匯總作業(yè)的輸入是數(shù)據(jù)清洗作業(yè)的輸出。MapReduce支持對(duì)文本文件進(jìn)行分片,因此輕度匯總作業(yè)中,大文件會(huì)被拆分為不同分片,小文件則作為獨(dú)立的分片。由于輸入文件數(shù)據(jù)量分布不均勻,輕度匯總作業(yè)也會(huì)出現(xiàn)大量Map任務(wù)的輸入數(shù)據(jù)量很小的情況。

根據(jù)MapReduce的分片規(guī)則,研究發(fā)現(xiàn)如果輸入數(shù)據(jù)中有海量小文件,使用默認(rèn)的分片規(guī)則會(huì)遇到如下問題:

(1)Map任務(wù)的任務(wù)管理和啟動(dòng)占用較多時(shí)間。Hadoop為每個(gè)任務(wù)啟動(dòng)一個(gè)新的JVM耗時(shí)約1 s[8],如果Map任務(wù)處理的分片數(shù)據(jù)量很小,執(zhí)行時(shí)間只有幾秒甚至更少,那么此時(shí)的任務(wù)管理和啟動(dòng)的時(shí)間開銷就不容忽視。

(2)Map任務(wù)執(zhí)行時(shí)不能充分利用內(nèi)存資源。如果一個(gè)Map任務(wù)處理的小文件體積遠(yuǎn)小于Map任務(wù)申請(qǐng)到的內(nèi)存資源(默認(rèn)為1 024 MB),那么這個(gè)任務(wù)申請(qǐng)的內(nèi)存將無法得到充分利用,造成資源浪費(fèi)。

因此在數(shù)據(jù)清洗和輕度匯總作業(yè)中,需要解決Map端數(shù)據(jù)傾斜問題,使Map任務(wù)負(fù)載最終能夠達(dá)到均衡。

4 小文件合并方法

為了解決Map端的數(shù)據(jù)傾斜問題,考慮在MapReduce作業(yè)的分片過程中對(duì)海量小文件進(jìn)行合并,將多個(gè)小文件合并為一個(gè)較大分片后再提送處理,使Map任務(wù)的負(fù)載更加均衡。本文采用實(shí)現(xiàn)CombineFileInputFormat類的方法對(duì)小文件進(jìn)行合并。

CombineFileInputFormat是一個(gè)抽象類,可以在分片時(shí)將小文件合并,作為一個(gè)分片進(jìn)行處理。對(duì)于大文件,如果文件可拆分,則拆分為多個(gè)分頻;如果不可拆分,則直接作為一個(gè)分片。該類中有3個(gè)關(guān)鍵變量,分別是:分片大小最大值(maxSize)、同一節(jié)點(diǎn)上分片大小最小值(minSizeNode)、同一機(jī)架上分片大小最小值(minSizeRack)。默認(rèn)情況下,以上變量均為0,用戶可以通過配置參數(shù)設(shè)定上述變量,需要確保minSizeNode≤minSizeRack≤maxSize。

創(chuàng)建分片時(shí),首先遍歷節(jié)點(diǎn),對(duì)節(jié)點(diǎn)上的數(shù)據(jù)塊按照maxSize進(jìn)行合并,如果該節(jié)點(diǎn)剩余數(shù)據(jù)塊之和大于minSizeNode,則合并為一個(gè)分片;其次遍歷機(jī)架,對(duì)機(jī)架上的數(shù)據(jù)塊按照maxSize進(jìn)行合并,如果該機(jī)架剩余數(shù)據(jù)塊之和大于minSizeRack,則合并為一個(gè)分片;對(duì)于沒有加入任何分片的小文件進(jìn)行統(tǒng)一處理,按照maxSize求得最終的合并。

為了使MapReduce作業(yè)在執(zhí)行過程中能夠更加有效,本文針對(duì)可拆分文件和不可拆分文件的處理過程引入了控制優(yōu)化,改進(jìn)完善了小文件合并方法,對(duì)maxSize、minSizeNode、minSizeRack參數(shù)進(jìn)行調(diào)優(yōu),并設(shè)計(jì)給出了動(dòng)態(tài)確定分片大小的方法。

4.1 數(shù)據(jù)清洗的解決方案

數(shù)據(jù)清洗作業(yè)的輸入是不可拆分的.gz文件,且數(shù)據(jù)量分布不均勻,存在海量小文件,需要利用CombineFileInputFormat類對(duì)小文件進(jìn)行合并。

創(chuàng)建小文件合并類CombineSmallFileInputFormat作為MapReduce作業(yè)的輸入格式,該類繼承Combine FileInputFormat類,并且實(shí)現(xiàn)createRecordReader()方法,該方法主要用于部署指導(dǎo)Map任務(wù)讀取輸入文件的方式。

圖1展示了優(yōu)化后的數(shù)據(jù)清洗作業(yè)。經(jīng)過優(yōu)化的方案會(huì)根據(jù)分片大小等參數(shù)的設(shè)置對(duì)小文件進(jìn)行合并,將.gz格式的大文件作為一個(gè)獨(dú)立的分片進(jìn)行處理。

4.2 輕度匯總的解決方案

輕度匯總作業(yè)的輸入是數(shù)據(jù)清洗作業(yè)的輸出,為可拆分的文本文件,且數(shù)據(jù)量分布不均勻,存在海量小文件。研究推得的解決方案步驟可分述如下:

步驟一 與數(shù)據(jù)清洗的方法一致,實(shí)現(xiàn)小文件合并類CombineSmallFileInputFormat作為MapReduce作業(yè)的輸入格式。

步驟二 采用動(dòng)態(tài)方式設(shè)置mapred.max.split.size參數(shù),以輸入文件的均值作為分片大小。

步驟三 設(shè)置minSizeNode及minSizeRack參數(shù),來優(yōu)化分片大小。

圖2是優(yōu)化后的輕度匯總作業(yè),主要實(shí)現(xiàn)了對(duì)小文件的合并,以及對(duì)大文件的拆分。同時(shí),還增加了根據(jù)輸入文件的大小動(dòng)態(tài)確定分片的方法及分片相關(guān)參數(shù)的優(yōu)化,使作業(yè)執(zhí)行時(shí)間進(jìn)一步縮短。

5 性能測試

小文件合并方法的對(duì)比實(shí)驗(yàn)將在Hadoop集群上設(shè)計(jì)展開仿真測試。該集群共89個(gè)節(jié)點(diǎn),包括2個(gè)NameNode。其中,NameNode1是備用名節(jié)點(diǎn),NameNode2是主節(jié)點(diǎn),存在87個(gè)DataNode,所有節(jié)點(diǎn)均為相同配置,為同構(gòu)集群。仿真測試中,物理環(huán)境的主題內(nèi)容可具體選配如下:操作系統(tǒng)為CentOS 6.4 (Final);實(shí)驗(yàn)平臺(tái)為Hadoop 2.6.0-cdh5.4.2;JDK環(huán)境為JDK 1.7.0_80;內(nèi)存為256 G;CPU為32核Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60 GHz;硬盤為18.8 T。

根據(jù)各省份日志的特點(diǎn),選擇5個(gè)省份某一天數(shù)據(jù)清洗后的DNS日志作為測試數(shù)據(jù),共21 741個(gè)文件,7.2 TB。各省日志的數(shù)據(jù)統(tǒng)計(jì)可見表1。

測試用的MapReduce作業(yè)實(shí)現(xiàn)計(jì)數(shù)功能,輸入數(shù)據(jù)的字段為:源IP、域名、目的IP、時(shí)間、解析類型,以四元組源IP、域名、目的IP、時(shí)間(精確到小時(shí))為鍵進(jìn)行計(jì)數(shù),輸出結(jié)果為:源IP、域名、目的IP、時(shí)間(精確到小時(shí))、解析次數(shù)。

5.1 CombineFileInputFormat和TextInputFormat對(duì)比實(shí)驗(yàn)

測試中,設(shè)計(jì)了5組實(shí)驗(yàn)用于對(duì)比小文件合并方法和默認(rèn)分片方法的作業(yè)執(zhí)行時(shí)間,并且對(duì)小文件合并方法又設(shè)置不同分片大小進(jìn)行結(jié)果比較。實(shí)驗(yàn)配置的指標(biāo)細(xì)節(jié)可見表2。實(shí)驗(yàn)結(jié)果可見表3和圖3。

如圖3所示,合并小文件方法性能提升與分片大小設(shè)置有關(guān)。使用文件大小平均值作為輸入的分片,效果穩(wěn)定,而且明顯優(yōu)于其余4個(gè)實(shí)驗(yàn)。

5.2 minSizeNode、minSizeRack參數(shù)的對(duì)比

此后,又設(shè)計(jì)了3組實(shí)驗(yàn)均使用小文件合并方法,并以均值為分片大小,但指定使用不同minSizeNode、minSizeRack的值進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)中的參數(shù)指標(biāo)設(shè)置可見表4。實(shí)驗(yàn)結(jié)果可見表5和圖4。

如圖4所示,使用minSizeNode、minSizeRack默認(rèn)值時(shí)的小文件合并作業(yè)效果會(huì)更好。究其原因即在于,未能設(shè)置這2個(gè)參數(shù)時(shí),MapReduce會(huì)將不足一個(gè)分片大小的數(shù)據(jù)塊統(tǒng)一處理,以用戶設(shè)置的分片大小進(jìn)行合并,而當(dāng)每個(gè)Map任務(wù)處理的數(shù)據(jù)量均衡時(shí),會(huì)比較節(jié)省集群資源。

6 結(jié)束語

本文針對(duì)現(xiàn)網(wǎng)DNS日志的特性,對(duì)MapReduce作業(yè)中Map端數(shù)據(jù)傾斜問題提出了改進(jìn)的方案,并將小文件合并成較大的分片。在此基礎(chǔ)上,對(duì)可以拆分的大文件進(jìn)行拆分,不可拆分的大文件則作為獨(dú)立的分片進(jìn)行處理,同時(shí)還做到了動(dòng)態(tài)確定分片大小,使Map端負(fù)載趨于均衡,從而有效解決了Map

端的數(shù)據(jù)傾斜問題。相比默認(rèn)的分片規(guī)則,該方法可以將DNS日志處理過程中的MapReduce作業(yè)執(zhí)行時(shí)間縮短30%。在后續(xù)工作中,將對(duì)MapReduce作業(yè)中的Reduce端數(shù)據(jù)傾斜問題進(jìn)行優(yōu)化,實(shí)現(xiàn)Reduce端負(fù)載均衡。

參考文獻(xiàn)

[1] MOCKAPETRIS P V. Domain names: Concepts and facilities[EB/OL]. [1987-11]. https://www.rfc-editor.org/rfc/rfc1034.txt.

[2] MOCKAPETRIS P V. Domain names: Implementation and specification[EB/OL]. [1987-11]. https://datatracker.ietf.org/doc/rfc1035/.

[3] Apache. Apache Hadoop[EB/OL]. [2017-12-18]. http://hadoop.apache.org/.

[4] DEAN J GHEMAWAT S. MapReduce: Simplified data processing on large clusters[J]. Communications of the ACM 2008 51(1):107-113.

[5] Apache. HDFS Architecture Guide[EB/OL]. [2013-08-04]. http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html.

[6] KWON Y BALAZINSKA M HOWE B et al. A study of skew in MapReduce Applications[C]// 5th Open Cirrus Summit. Moscow,Russia:Russian Academy of Sciences,2011:1-5.

[7] KWON Y C BALAZINSKA M HOWE B et al. SkewTune in action: Mitigating skew in MapReduce applications[J]. Proceedings of the VLDB Endowment 2012 5(12):1934-1937.

[8] TOM W. Hadoop權(quán)威指南[M]. 3版. 華東師范大學(xué)數(shù)據(jù)科學(xué)與工程學(xué)院,譯. 北京:清華大學(xué)出版社,2015.

猜你喜歡
性能優(yōu)化
SQL Server數(shù)據(jù)庫性能優(yōu)化的幾點(diǎn)分析
Web應(yīng)用的前端性能優(yōu)化
660MW超超臨界火電機(jī)組RB性能優(yōu)化
WEB網(wǎng)站緩存性能優(yōu)化
淺析Lustre的優(yōu)化設(shè)置
Oracle數(shù)據(jù)庫性能調(diào)整與優(yōu)化分析
科技視界(2016年1期)2016-03-30 14:27:50
文成县| 三门峡市| 林芝县| 淮南市| 玉屏| 东乌| 玉山县| 汾西县| 宜州市| 时尚| 武夷山市| 陕西省| 鄂托克旗| 南安市| 新建县| 昭觉县| 子洲县| 措勤县| 康保县| 定结县| 富民县| 金阳县| 西贡区| 株洲市| 黄浦区| 太仆寺旗| 巫山县| 崇明县| 巧家县| 翼城县| 凤凰县| 阿图什市| 泰安市| 马龙县| 墨江| 磐安县| 浦县| 南宁市| 稻城县| 当阳市| 三门县|