欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于MapReduce的FTP分布式采集方法與流程

文檔序號:12491635閱讀:1808來源:國知局
基于MapReduce的FTP分布式采集方法與流程

本發(fā)明涉及一種遠(yuǎn)程數(shù)據(jù)采集方法,尤其涉及一種基于MapReduce的FTP分布式采集方法。



背景技術(shù):

目前常用的FTP下載遠(yuǎn)程服務(wù)器上面的數(shù)據(jù)有如下幾種方式:

1)單線程,使用Apache FTP下載遠(yuǎn)程服務(wù)器的數(shù)據(jù);

2)多線程,使用Apache FTP,啟用多個線程,多FTP Client下載遠(yuǎn)程服務(wù)器的數(shù)據(jù);

3)部署多個服務(wù),使用Apache FTP,啟動多個線程,多FTP Client下載遠(yuǎn)程服務(wù)器的數(shù)據(jù)。

現(xiàn)有技術(shù)的主要缺點(diǎn)如下:

1)使用Apache FTP單線程下載遠(yuǎn)程服務(wù)器的數(shù)據(jù)時,采集速度明顯不足,帶寬和IO速率都不能發(fā)揮出比較高的性能,所以采集速度明顯不高。

2)使用Apache FTP多線程下載遠(yuǎn)程服務(wù)器的數(shù)據(jù)時,采集速度明顯提升,帶寬和IO速率等都發(fā)揮出高性能,采集速度受限于磁盤IO的性能,帶寬等因素。

3)部署多個服務(wù),使用Apache FTP多線程下載遠(yuǎn)程服務(wù)器的數(shù)據(jù),多個節(jié)點(diǎn)同時采集,采集速度應(yīng)該達(dá)到最優(yōu)。但是要在多臺服務(wù)部署采集應(yīng)用,維護(hù)起來比較麻煩。

由上可見,現(xiàn)有的采集遠(yuǎn)程服務(wù)器上的數(shù)據(jù),在大數(shù)據(jù)的環(huán)境下,每天幾十G或者幾個T的數(shù)據(jù)生成速度,沒有一個理想的采集速度,肯定是滿足不了需求的。傳統(tǒng)的單線程采集慢,部署多應(yīng)用多線程采集,維護(hù)比較麻煩。MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算,它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運(yùn)行在分布式系統(tǒng)上。當(dāng)前的軟件實(shí)現(xiàn)是指定一個Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。MapReduce的一個經(jīng)典實(shí)例是Hadoop,用于處理大型分布式數(shù)據(jù)庫。因此,有必要提供一種基于MapReduce的FTP分布式采集方法。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明所要解決的技術(shù)問題是提供一種基于MapReduce的FTP分布式采集方法,,只需要啟動一個采集服務(wù)即可實(shí)現(xiàn)FTP多線程采集,能夠提升采集速度并且簡化維護(hù)工作。

本發(fā)明為解決上述技術(shù)問題而采用的技術(shù)方案是提供一種基于MapReduce的FTP分布式采集方法,包括如下步驟:S1)預(yù)先配置好多臺FTP服務(wù)器信息和日志文件路徑,并將配置信息存儲到Hadoop的HDFS中作為MapReduce的數(shù)據(jù)輸入;S2)設(shè)置MapReduce的輸入目錄和Reduce任務(wù)數(shù);S3)利用MapReduce將不同的日志記錄分發(fā)到不同的HDFS集群節(jié)點(diǎn)進(jìn)行處理;S4)每個HDFS集群節(jié)點(diǎn)讀取到FTP服務(wù)器信息之后,使用賬號密碼連接FTP服務(wù)器,展開預(yù)先配置好的日志文件路徑,通過IO流將文件寫入到HDFS中,實(shí)現(xiàn)多個HDFS集群節(jié)點(diǎn)同時采集多臺FTP服務(wù)器的日志信息。

上述的基于MapReduce的FTP分布式采集方法,其中,所述步驟S1)將配置信息編寫成文本信息,每一行對應(yīng)一臺FTP服務(wù)器,每一行文本包含F(xiàn)TP服務(wù)器IP、端口、賬號、密碼、日志路徑和日志編號,所述日志編號按行依次采用1、2、3、…n等順序排列,n為自然數(shù)。

上述的基于MapReduce的FTP分布式采集方法,其中,所述步驟S2)指定FTP服務(wù)器的臺數(shù)為Reduce任務(wù)數(shù),所述步驟S3)先將HDFS集群節(jié)點(diǎn)數(shù)和整型數(shù)的上限值進(jìn)行與運(yùn)算,再利用日志編號對Reduce任務(wù)數(shù)取余,然后采用Hadoop中的分區(qū)類HashPartitioner將不同的日志記錄分發(fā)到不同的HDFS集群節(jié)點(diǎn)。

上述的基于MapReduce的FTP分布式采集方法,其中,所述步驟S4)中的每個HDFS集群節(jié)點(diǎn)采用Apache FTP客戶端連接到FTP服務(wù)器。

本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果:本發(fā)明提供的基于MapReduce的FTP分布式采集方法,利用MapReduce的分布式的工作原理,結(jié)合Apache FTP多線程采集,采集速度跟多應(yīng)用多線程差不多,但是只需要啟動一個采集服務(wù)即可,從而提升了速度并且也簡化了維護(hù)工作。

附圖說明

圖1為本發(fā)明基于MapReduce的FTP分布式采集流程圖;

圖2為本發(fā)明基于MapReduce的FTP分布式采集系統(tǒng)架構(gòu)示意圖。

具體實(shí)施方式

下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的描述。

圖1為本發(fā)明基于MapReduce的FTP分布式采集流程圖。

請參見圖1,本發(fā)明提供的基于MapReduce的FTP分布式采集方法,包括如下步驟:

S1)預(yù)先配置好多臺FTP服務(wù)器信息和日志文件路徑,并將配置信息存儲到Hadoop的HDFS中作為MapReduce的數(shù)據(jù)輸入;

S2)設(shè)置MapReduce的輸入目錄和Reduce任務(wù)數(shù);

S3)利用MapReduce將不同的日志記錄分發(fā)到不同的HDFS集群節(jié)點(diǎn)進(jìn)行處理;

S4)每個HDFS集群節(jié)點(diǎn)讀取到FTP服務(wù)器信息之后,使用賬號密碼連接FTP服務(wù)器,展開預(yù)先配置好的日志文件路徑,通過IO流將文件寫入到HDFS中,從而實(shí)現(xiàn)多個HDFS集群節(jié)點(diǎn)同時采集多臺FTP服務(wù)器的日志信息。

本發(fā)明在基于Hadoop的MapReduce分布式處理架構(gòu)之上引入Apache FTP;本發(fā)明可以跟任意Hadoop版本中的MapReduce整合,利用分布式計(jì)算框架的原理。將采集任務(wù)分發(fā)到集群上的每一臺機(jī)器上進(jìn)行采集。這樣每臺機(jī)器的帶寬,磁盤IO性能都能得到充分利用。本發(fā)明采集性能較高,只需要啟動一個采集服務(wù),維護(hù)容易,擴(kuò)展性強(qiáng),適用跨度廣泛,實(shí)用性強(qiáng),沒有版本限制,可以無縫隙集成到目前任何版本的Hadoop。

本發(fā)明的MapReduce結(jié)合Apache FTP采集遠(yuǎn)程服務(wù)的整體架構(gòu)如圖2所示,整個采集大致分為如下四個步驟:(1)準(zhǔn)備FTP服務(wù)器和日志相關(guān)信息;(2)編寫MapReduce程序;(3)繼承Partitioner;4)整合Apache FTP采集日志。

啟動服務(wù)之后,首先要讀取FTP服務(wù)器的賬號密碼和日志存放路徑等相關(guān)信息,因?yàn)楸景l(fā)明是將Apache FTP整合到Hadoop的MapReduce分布式計(jì)算框架中的,所以配置的FTP服務(wù)器信息就可以編寫成文本信息,每一行對應(yīng)一臺FTP服務(wù)器,放到Hadoop的HDFS中存儲,這樣就可以作為MapReduce的數(shù)據(jù)輸入

Partitioner是MapReduce的一個重要組件,它的作用是可以將不同的日志記錄分發(fā)到不同的reduce中處理;使用者通常會指定Reduce任務(wù)和Reduce任務(wù)輸出文件的數(shù)量(R)。用戶在中間key上使用分區(qū)函數(shù)來對數(shù)據(jù)進(jìn)行分區(qū),之后在輸入到后續(xù)任務(wù)執(zhí)行進(jìn)程。一個默認(rèn)的分區(qū)函數(shù)式使用hash方法(比如常見的:hash(key)mod R)進(jìn)行分區(qū)。hash方法能夠產(chǎn)生非常平衡的分區(qū),鑒于此,Hadoop中自帶了一個默認(rèn)的分區(qū)類HashPartitioner,它繼承了Partitioner類,提供了一個getPartition的方法,定義如下:

由上可見,HashPartitoner通過(key.hashCode()&Integer.MAX_VALUE)%numReduceTasks,將key均勻分布在Reduce Tasks上。例如:如果Key為Text的話,Text的hashcode方法跟String的基本一致,都是采用的Horner公式計(jì)算,得到一個int整數(shù)。但是,如果string太大的話這個int整數(shù)值可能會溢出變成負(fù)數(shù),所以和整數(shù)的上限值Integer.MAX_VALUE(即0111111111111111)進(jìn)行與運(yùn)算,然后再對reduce任務(wù)個數(shù)取余,這樣就可以讓key均勻分布在reduce上。

了解了Partitioner的作用之后,繼續(xù)后面的處理。假設(shè)現(xiàn)在有3臺FTP服務(wù)器的日志需要采集,集群大小為10個節(jié)點(diǎn)。那么本發(fā)明可以設(shè)置Reduce任務(wù)數(shù)為3job.setNumReduceTasks(3),節(jié)點(diǎn)資源是足夠的;每一行的FTP服務(wù)器信息,包含日志路徑,還有日志編號。本發(fā)明巧妙地設(shè)置編號為1、2、3等順序排列,利用日志編號對reduce數(shù)取余數(shù)。這樣每一行的FTP服務(wù)器信息就會均勻的分發(fā)到不同節(jié)點(diǎn)上面處理,達(dá)到了分布式處理的效果。

MapReduce讀取到FTP服務(wù)器信息之后,使用賬號密碼連接FTP服務(wù)器,展開預(yù)先配置好的日志文件路徑,通過IO流將文件寫入到HDFS中,到此整個過程便實(shí)現(xiàn)了多個節(jié)點(diǎn)同時采集多臺服務(wù)器的日志信息,大大提供了采集性能。下面給出每個主要步驟的詳細(xì)邏輯。

1、準(zhǔn)備FTP服務(wù)器和日志相關(guān)信息

假設(shè)現(xiàn)在要采集三臺服務(wù)器的日志數(shù)據(jù),編寫文本文件ftp_info.txt,上傳到HDFS上,作為MapReduce的輸入數(shù)據(jù),基本信息如下:

2、編寫MapReduce程序

a)設(shè)置MapReduce輸入目錄和reduce任務(wù)數(shù)

FileInputFormat.addInputPath(job,new Path("/ftp_info.txt"));

假設(shè)想利用3臺機(jī)器去采集,則設(shè)置reduceNum為3

job.setNumReduceTasks(3);

b)map階段,不做任何數(shù)據(jù)處理,直接輸出

3、繼承Partitioner

partitioner階段,也是該技術(shù)的核心,將不同編號的日志,分發(fā)到不同集群節(jié)點(diǎn)去執(zhí)行

4、整合Apache FTP采集日志

在reduce階段,可以得到每一行的FTP服務(wù)器信息,并通過Apache FTP連接到每一臺服務(wù)器,將日志采集到HDFS集群上

采集日志就是collectLog方法就是自己做的一些業(yè)務(wù)處理了,大概如下:1)通過帳號、密碼信息,連接到ftp;2)展開日志路徑下所有日志;3)做些日志過濾等業(yè)務(wù)處理;4)打開文件的輸入輸出流,將文件下載到HDFS上。

本發(fā)明利用Hadoop MapReduce分布式的原理,整合Apache FTP采集數(shù)據(jù),可配置的方式任意配置需要采集的FTP服務(wù)器的日志,兼容0.2x–2.7(目前最高版本)。具體優(yōu)點(diǎn)如下:1)插件式依附在Hadoop的MapReduce中,是可以通過簡單配置文本的方式實(shí)現(xiàn)FTP服務(wù)器上的日志采集;2)與Hadoop原有的接口完全兼容,做到架構(gòu)依賴低耦合。3)整合到MapReduce中的,利用MapReduce的分布式計(jì)算原理,可以將采集任務(wù)分發(fā)到不同的節(jié)點(diǎn)上進(jìn)行采集,大大提升了采集性能;4)適用跨度廣泛,實(shí)用性強(qiáng),沒有版本限制,可以無縫隙集成到目前任何版本的Hadoop;5)植入非常簡單輕松,采用配置文件模式,利用Java生產(chǎn)環(huán)境中原生態(tài)庫集成;6)維護(hù)容易,擴(kuò)展性強(qiáng)。

雖然本發(fā)明已以較佳實(shí)施例揭示如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的修改和完善,因此本發(fā)明的保護(hù)范圍當(dāng)以權(quán)利要求書所界定的為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
西藏| 郸城县| 关岭| 丰顺县| 苍梧县| 大英县| 池州市| 忻州市| 安泽县| 水城县| 准格尔旗| 桦甸市| 平定县| 马尔康县| 达州市| 新泰市| 新乐市| 惠州市| 江城| 元江| 屏东市| 西城区| 周口市| 陇南市| 东宁县| 泰来县| 延边| 彭山县| 南漳县| 巢湖市| 万全县| 桐城市| 萨嘎县| 舒城县| 嵊泗县| 腾冲县| 六枝特区| 黎川县| 鹰潭市| 潮州市| 龙山县|