一種海量數據的收集與交換系統及方法
【技術領域】
[0001]本發明涉及大數據和數據收集領域,具體是一種海量數據收集與交換系統及方法。
【背景技術】
[0002]隨著信息通信技術發展積累至今,各種各樣的數據成爆發式發展,使得太字節(Terabyte,TB)、拍字節(PetaByte,PB)甚至艾字節(Exabyte,EB)級的數據都變為一種常態,大數據時代便在其中孕育而生;大數據雖然孕育于信息技術的日漸普遍和成熟,它對社會經濟生活產生的影響絕不限于技術層面,更本質上,他是為我們看待世界提供了一種全新的方法,即決策行為將日益基于數據分析做出而不是像過去那樣更多憑借經驗和直覺做出。
[0003]大數據指的是無法在人可承受的時間范圍內用常規軟件工具進行捕捉、管理和處理的數據集合;在無法使用常規軟件工具對大數據進行處理,代表著我們日常使用的機器是無法完成對大數據的存儲和分析處理任務的;而高性能的巨型機會隨著性能的提升而價格翻倍、甚至幾倍的提高;如何解決這些難題?分布式集群可以很好的解決這一難題;開源項目分布式系統架構(Hadoop)正是為了解決互聯網時代的海量數據存儲和處理而設計、開發的;簡單的講Hadoop是一個可以更容易開發和并行處理大規模數據的分布式計算和存儲系統;它有橫向擴展能力強、成本低、效率高、可靠的特點;目前Hadoop的用戶已經從傳統的互聯網公司想,擴展到電信行業、電力行業、醫院、金融行業,并得到越來越廣泛的應用。
[0004]雖然Hadoop系統具有如此多的特點以適用于大數據的存儲和處理,但是很多原始數據存儲在單機機器上,而非Hadoop集群中,如果我們不能將這些數據交換到Hadoop集群中,Hadoop的各種優點都將無法實施;如何將這些原始數據交換到Hadoop系統平臺上成為了首先要解決的問題;因此我們急切的尋找一種可以快速高效、安全可靠的方式將不同數據源中的數據交換到Hadoop系統中來;目前Hadoop的項目中有一個子項目數據傳輸工具(Sqoop)可以將關系型數據庫中的數據與Hadoop系統進行數據交換,但是它有兩個不足:1、只能與關系型數據庫進行數據交換;2、Sq00p的運行依賴不Hadoop的環境,不能脫離Hadoop進行數據交換。
[0005]本發明針對上述這些問題,提出一種海量數據的收集與交換系統及方法。
【發明內容】
[0006]本發明是一種海量數據收集與交換系統及方法,目的在于實現不同數據源與大數據處理平臺之間的數據交換。
[0007]本發明的技術解決方案是:本發明是一種海量數據收集與交換系統,其特殊之處在于,該系統采用代理模式,該系統的代理包括數據收集器、傳輸通道、接收器,各個代理之間相互獨立,可以對多個數據源進行并行交換,實現數據讀入和寫出的分離,使得系統架構更加靈活、輕量、高效。
[0008]所述數據收集器負責將數據源的數據收集,經過加工轉化為事件,以事件(包括事件頭信息和數據兩個部分)的形式發送的傳輸通道上,支持多種數據接收器。
[0009]所述傳輸通道用來緩存數據收集器發送過來的事件,為保證傳遞過程中數據的可靠性,只有當事件緩存到下一傳輸通道或者接收器處理完該事件時,才將事件從此傳輸通道中刪除。
[0010]所述接收器抽取傳輸通道中的事件,根據相應配置將文件存儲到文件系統、數據庫,或者提交到遠程服務器或下一級的代理中。
[0011]所述數據收集器支持的數據接收器包括文件、目錄和數據庫。
[0012]所述傳輸通道包括文件和內存。
[0013]所述接收器包括分布式文件系統(Hadoop Distributed File System,HDFS)、非關系型數據庫(Hadoop Database,HBase)、消息系統(Kafka)和文件。
[0014]本發明是一種海量數據收集與交換方法,其特殊之處在于,該方法包括以下步驟。
[0015]1)根據需求編寫代理的配置文件。
[0016]2)依據編寫好的配置文件啟動代理,代理成功啟動后,開始傳輸數據,由接收器把數據從外部數據源讀入代理內部,把讀入的數據封裝成事件發送到傳輸通道中緩存,等待接收器的抽取,接收器抽取這些事件并將它們解析為原始數據,存儲到最終目的地;代理啟動后,數據的傳輸過程是自動的,還可以根據數據的變化而自動實現變換數據的收集。
[0017]上述步驟1)的具體實現步驟如下。
[0018]100)數據接收器的類型需要根據外部數據源的類型做相應的配置,若數據源為一個目錄下的文件,接收器類型配置為目錄文件(Spooling Directory, spooldir),還要配置數據源的位置。
[0019]101)傳輸通道的類型根據需要配置;傳輸通道還需要配置通道的容量的大小,轉換能力的大小等選項。
[0020]102)接收器的類型與用戶最終將數據存入的位置有關;當選用HDFS作為接收器時,要配置存儲到HDFS上文件的位置,文件的大小。
[0021]上述步驟2)中所述代理的數據傳輸步驟如下。
[0022]200)數據收集器根據配置的地址讀取外部數據源中的數據,讀入后先判斷數據是否為新數據,確認為新后,對數據進行預處理,將數據進行特定的格式化,并且加上頭信息,封裝成為一個事件。
[0023]201)數據收集器把事件發送到單個或多個傳輸通道中,其中可以把傳輸通道看作是一個緩沖區,它保存事件直到接收器抽取并處理完該事件。
[0024]202)接收器抽取傳輸通道中的事件,將事件解析成為原始數據,通過調用客戶端接口將數據寫入到目的端,或者作為下一級代理的外部數據源。
【附圖說明】
[0025]圖1系統的整體架構圖。
[0026]圖2代理內部數據流程圖。
【具體實施方式】
[0027]下面參照附圖對本發明進行詳細說明;以下對本發明的詳細說明并不是對本發明的限制;相反,本發明的范圍是由所附權利要求而定的。
[0028]本發明是一種海量數據收集與交換系統,其中系統的整體架構圖如圖1所示;該系統采用代理模式,該系統的代理包括數據收集器、傳輸通道、接收器,各個代理之間相互獨立,可以對多個數據源進行并行交換,實現數據讀入和寫出的分離,使得系統架構更加靈活、輕量、高效。
[0029]數據收集器負責將數據源的數據收集,經過加工轉化為事件,以事件(包括事件頭信息和數據兩個部分)的形式發送的傳輸通道上,支持多種數據接收器,如文件、目錄、數據庫等。
[0030]傳輸通道用來緩存數據收集器發送過來的事件,為