朱濤 孫知信 宮婧
摘? 要:任意一個分布式系統(tǒng)都必須滿足CAP理論,在數據分析分析系統(tǒng)中,最為重要的是效率以及可靠性,而數據采集時整個分析系統(tǒng)的基石,構建基于改進的Flume的實時數據采集系統(tǒng),通過flume采集數據,采用復合型Channel與flume相結合,在保證數據源的豐富性和可靠性的前提下,提高采集的效率。實驗結果表明,該系統(tǒng)的各項功能符合預期結果,Flume使用復合型Channel可以提高采集效率。
關鍵詞:Flume? CAP? 實時性? 分布式
中圖分類號:TP273.5? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A文章編號:1672-3791(2021)04(b)-0073-04
Real Time Data Acquisition System Based on Improved Flume
ZHU Tao? ?SUN Zhixin*? GONG Jing
(Nanjing University of Posts and Telecommunications, Nanjing, Jiangsu Province, 210023 China)
Abstract:? Any distributed system must meet the CAP theory. In a data analysis system, the most important thing is efficiency and reliability. The cornerstone of the entire analysis system for data collection is to build a real-time data collection system based on improved Flume. Collect data through flume, and use the combination of composite channel and flume to improve the efficiency of collection while ensuring the richness and reliability of the data source. The experimental results show that the functions of the system meet the expected results. Flume uses the composite channel can improve the collection efficiency.
Key Words: Flume; CAP; Real-time; Distributed
隨著互聯網技術飛速發(fā)展,各種網絡應用呈現爆發(fā)式增長,同時用戶使用量也急劇增加,這也意味著各種智能終端產生的日志數據與日俱增,如何更好地管理以及更快地采集日志數據,成了一個亟待解決的問題,而數據是實現大數據研究的基礎,傳統(tǒng)的數據采集技術方案己經難以滿足快速采集高質量的數據集的需求。
1? 相關技術研
hossam hakeem[1]在基于對當前的國內外的大數據環(huán)境進行的深度剖析的基礎之上,提出基于大數據的數據分析的軟件架構,并針對于自己需要處理的數據類型提出一種基于分層的數據分析的模型。尚凱[2]基于對國內運營商數據的復雜性以及數據采集時的困難的研究,提出一種新的方案,其規(guī)定數據采集的來源均來源于企業(yè)B域、O域、M域以及企業(yè)外部,采用高可用、高可靠、分布式的數據采集方法,并對這些數據進行清洗、處理后,將數據存儲于運營商的數據庫當中,此方案在對于海量的結構化以及非結構化的數據進行采集時可以提供很好的實時性。
于秦[3]通過開源軟件Flume設計實現一款分布式多平臺多系統(tǒng)收集多種日志的系統(tǒng),此系統(tǒng)具有高吞吐量、可擴展性強、高聚合等特征。在提供高速數據采集解決方案方面, 李祥等[4]研究者中同時使用這兩個組件,系統(tǒng)的整體架構分為數據采集層、數據分析層、Web界面展示組成,而數據分析采用了Hadoop和Strom分別實現數據的離線和實時計算,數據采集層采用Flume來實時地采集數據。陳飛等[5]研究者采用Flume的數據采集框架和ElasticSearch組合來對Nginx的日志進行數據采集,并對這些數據進行分析,從而完成對整個系統(tǒng)的實現。Hadoop是一般是用作離線處理的,而Strom則是一個很好的實時計算框架。
通過上述分析,該文將構建基于改進的Flume的實時數據采集系統(tǒng),在提高數據的采集效率同時采用分布式系統(tǒng)滿足高可用性,提高了分析系統(tǒng)的分析效率。
2? 基于改進的Flume的實時數據采集系統(tǒng)
現如今的研究更多地關注動態(tài)實時數據,而不是靜態(tài)數據,這提出了更高的技術要求。要處理流數據,第一步是收集大規(guī)模實時流數據[6]。由于實時數據傳輸的不穩(wěn)定性,流數據的收集與傳統(tǒng)方法大不相同。隨著數據種類變得復雜且框架自帶的Memory Channel和File Channel都會有各種各樣的問題,無法提高更好地實時數據采集[7]。下面提出對Flume框架的改進。
Flume自身提供了Memory Channel和File Channel。當相關人員使用Memory Channel,它會將events存放于內存的隊列中保證它的效率,它的優(yōu)點就是高效、高吞吐量,但是缺點也很明顯,當機器宕機或者服務死掉的時候,內存中的數據都會丟失,從而導致分析得不到準確的數據。而File Channel卻相反,它是將所有的events被保存在本地的磁盤文件中,優(yōu)點是容量較大且發(fā)生故障時數據可恢復,缺點就是速度較慢。
為了充分利用這兩種channel的優(yōu)勢,該文引入復合型channel,復合型channel根據其內在的每個channel的使用情況以及下游Sink的處理情況,來自主地選擇下次使用哪種channel來進行數據的存儲。Sink的接收速度很快,當Sink接收器處理速度夠快,并且Channel沒有存放過多數據的時候,相關人員可以采用Memory Channel,從而使得整個的系統(tǒng)的傳輸效率最大化;反之,當Sink接收器處理速度跟不上,同時希望Channel可以暫時存儲采集到的數據時,相關人員可以采用File Channel來減少下游數據處理的壓力。因此,需要實現complex Channel,即就能智能地在兩個Channel之間切換。復合channel的運行流程圖見圖1。
步驟1:flume從磁盤實時采集數據,經過攔截器對數據進行一些預處理。
步驟2:經過預處理的數據通過選擇器,選擇復合型的channel。
步驟3:定義兩個原子布爾型變量(putToMemCh-
annel、takeFromMemChannel)作為標志位,分別表示是否寫入MemChannel和是否從MemChannel中取出。
步驟4:執(zhí)行put方法,判斷是否可以往內存MemChannel寫入數據,如果可以,則轉到步驟5,否則,轉到步驟7。
步驟5:對數據的put事務性的判斷,是否滿足要求,如果滿足,則轉至步驟6,否則,轉至步驟5。
步驟6:將數據寫入內存,并且為下次的寫入做準備,判斷MemChannel是否為空或者FileChannel現在大小是否超過100,二者只要滿足其一,就將putToMemChannel置為false。
步驟7:對數據進行put進行事務性的判斷,是否滿足要求,如果滿足,則將數據通過寫入FileChannel,如果不滿,則轉至步驟7。
步驟8:執(zhí)行take方法,判斷是從哪個類型的channel獲取數據,如果是MemChannel,則轉至步驟9,否則轉至步驟11。
步驟9:對數據的take事務性進行判斷,判斷是否滿足要求,如果滿足,則轉至步驟10,否則,轉至步驟9。
步驟10:對數據進行事務性的取出,并判斷數據是否為空,如果為空,代表內存中無數據,將takeFromMemChannel設為false,意味著下次將從FileChannel中獲取數據。
步驟11:對數據進行事務性的取出,并判斷數據是否為空,如果為空,代表文件系統(tǒng)中沒有數據,則將takeFromMemChannel和putToMemChannel設為true,意味著下次將從內存中讀取和寫入數據。
3? 系統(tǒng)實現與測試
在構建該系統(tǒng)中,該文基于E5-2667CPU(20處理器)、128內存和25T硬盤的服務器上利用VM-ware 虛擬化5臺服務器,利用這5臺服務器進行綜合評測。集群安裝組件配置如表1所示。
該文設計的系統(tǒng)模型與傳統(tǒng)的Flume-HDFS模型在同一大小數據的分析耗時對比見圖2,該系統(tǒng)的傳輸效率以及在數據的分析實時性要高于原系統(tǒng)。
4? 結語
該文構建了基于改進的Flume的實時數據采集系統(tǒng),通過實現數據采集框架與復合Channel選擇技術相結合,對數據采集環(huán)節(jié)做出了改進。實驗測試了數據采集的效率。由實驗結果表明,相比于傳統(tǒng)的數據
分析系統(tǒng),該系統(tǒng)在數據采集效率和時性方面有明顯的提升。綜合分析可得,該文平臺可以更加高效地、穩(wěn)定地完成數據的實時采集。
參考文獻
[1] Hossam Hakeem.Layered Software Partterns for Data Analysis in Big Data Environment[J].International Journal of Automation and Computing,2017,14(6):650-660.
[2] 尚凱.企業(yè)數據中心數據采集與建模[D].山東大學,2017.
[3] 于秦.基于Apache Flume的大數據日志收集系統(tǒng)[J].中國新通信,2016,18(18):41.
[4] 李洋,呂家恪.基于Hadoop與Storm的日志實時處理系統(tǒng)研究[J].西南師范大學學報:自然科學版,2017,42(4):119-126.
[5] 陳飛,艾中良.基于Flume的分布式日志采集分析系統(tǒng)設計與實現[J].軟件,2016,37(12):82-88.
[6] M.Rashid,A.Hamid,N.Ahmad,et al. Novel Machine Learning Approach for Sentiment Analysis of Real Time Twitter Data with Apache Flume[C]//2020 Sixth International Conference on Parallel,Distributed and Grid Computing (PDGC).2020:336-340.
[7] A.Kanavos,G.Vonitsanos,A.Mohasseb,et al. An Entropy-based Evaluation for Sentiment Analysis of Stock Market Prices using Twitter Data[C]//2020 15th International Workshop on Semantic and Social Media Adaptation and Personalizatio.2020:1-7.