◆段玉風
大數據環境下分布式數據抓取策略的研究與應用
◆段玉風
(運城廣播電視大學 山西 044000)
隨著網絡技術與移動通信技術的飛速發展,互聯網已經進入了大數據時代,傳統的數據抓取技術已經很難適應當前海量數據的應用需求,為了能夠有效改善這一現狀,本文提出了基于Hadoop的分布式網絡爬蟲改進策略,以滿足大數據環境下用戶對互聯網信息的應用需求。
大數據;Hadoop;分布式網絡爬蟲
Hadoop是一種分布式架構的數據處理系統,其技術優勢主要體現在兩個方面:一是硬件兼容性方面,Hadoop系統對網絡集群設備的性能要求較低,這大大較低了系統構建的設備購置成本;二是應用軟件兼容性方面,Hadoop系統提供有標準統一的程序接口,可為第三方應用軟件開發提供穩定的運行環境[1]。Hadoop系統底層架構主要由海量數據存儲和并行數據處理兩個大核心功能組件構成,分別是HDFS、MapReduce[2]。其中HDFS(分布式文件系統)采用主從節點結構建立了分布式網絡集群的數據管理模式,該模式下,主節點負責元數據的存儲管理,從節點直接面向客戶端對象,完成數據的讀寫操作,大大提高了數據的響應效率和數據管理的安全性;MapReduce(并行數據處理)提供了高效的分布式數據并行處理模型,通過HDFS系統創建對應的MapReduce任務,并在多個主節點間調度分配,使得多個節點設備之間能夠協同工作,完成數據的分析處理。
Hadoop系統是當前最為主流的大數據管理平臺,在數據存儲與并行處理方面有著明顯的技術優勢,但在有效數據的抓取方面還有所欠缺,由于傳統的網絡數據抓取方式難以適用于Hadoop的分布式系統環境,因此如何快速、準確獲取到用戶需要的數據是當下大數據平臺發展急待解決的問題。
數據抓取指的是依據用戶需求,通過搜索引擎在大數據平臺中檢索到相關數據并反饋至請求客戶端。這種網絡數據抓取技術主要采用了一種叫作網絡爬蟲的排序算法作為核心算法。基于網絡爬蟲技術的數據抓取過程主要有五個步驟組成:
(1)構建數據抓取的檢索連接庫,用于管理能夠提供適合需求的網站URL,這些URL為數據抓取的提供了對應的數據檢索范圍,被稱為URL種子;
(2)依據用戶請求,選取適合的URL種子建立并更新數據檢索隊列;
(3)通過URL種子檢索,從相應的網頁中獲取到所需數據,并保持到本地文件系統當中;
(4)對已抓取數據當中的URL進行檢測、去重,將重復數據結果刪除;
(5)結束數據抓取,將結果響應至網絡客戶端。
網絡爬蟲技術的數據抓取策略主要有深度遍歷、廣度遍歷與最優路徑遍歷等[3],前兩種策略,主要是通過已鎖定的任一URL種子,對其進行縱向或橫向遍歷,最優路徑策略是需要先在相關的URL間繪制路徑,通過預先設定的條件對路徑進行優先選擇,并沿選擇的路徑進行遍歷。無論哪種策略,在面向海量的網絡數據時,其復雜的數據關系都使得數據遍歷的時間開銷在成倍增加,每抓取一次數據,都會涉及對上億的URL進行遍歷。為了進一步提高海量數據抓取的時效性與準確性,基于Hadoop分布式數據平臺的網絡爬蟲技術的應用研究受到了極大的關注,并提出了分布式網絡爬蟲概念。
分布式網絡爬蟲,簡單講就是部署在分布式集群設備上的數據抓取策略,借助網絡集群并行完成海量數據的抓取工作。其核心問題涉及兩個方面,一是各個集群節點間的任務協調問題,二是各個節點間的任務分配問題。目前這兩類問題主要是通過建立節點間的通信模式來解決,分布式網絡爬蟲提供了三種通信模式:
主從模式:在節點間建立主從關系,主節點負責維護和管理URL種子列表,以及各個從節點之間通信和任務分配;從節點負責完成具體的檢索任務,并將產生的結果反饋至從節點。該模式實現較為復雜,適用于復雜的數據處理環境。
自治模式:不設置專門的控制節點,各節點之間直接進行通信,協調任務管理,常見的有單向環形通信和全連通通信兩種結構。單向環形通信中所有節點單向環形連接在一起,每個節點只能單向發送和接收信息;全連通通信中所有節點均可雙方發送和接收信息。該模式實現較為簡單,適用于數據處理量較少的分布式網絡環境。
混合模式:即以上兩種模式主要特點的結合,節點間直接進行通信,在通信過程中的錯誤信息、失敗的任務分配等,會通過特定節點進行收集和整理,并予以糾正。
由于Hadoop平臺的分布式文件管理模式也采用的是主從模式,因此數據抓取策略中也將重點針對主從模式的分布式網絡爬蟲技術展開研究。
基于Hadoop平臺的網絡爬蟲系統的基本設計架構如圖1所示:

圖1 分布式網絡爬蟲系統的設計架構
如圖所示,分布式網絡爬蟲系統的功能框架包括URL數據庫、抓取網頁、解析數據、數據去重四個功能模塊。其中抓取網頁、解析數據和數據去重模塊構建在Hadoop的MapReduce并行處理系統當中,以主從通信模式完成任務分配與執行,URL數據庫內置于Hadoop的HDFS文件管理系統當中,用于存儲URL網頁數據。其工作流程如下:
首先通過抓取網頁模塊對URL數據庫中的URL列表進行檢索,并將檢索過程中采集到的數據存儲在URL數據庫的DATA數據表中。
再通過解析數據模塊對采集到的網頁數據信息進行解析,將解析后取得的數據連接信息回存至DATA數據表中。
最后由數據去重模塊對DATA數據表中的重復數據進行檢索與刪除。整個工作流程中所涉及的數據存儲由Hadoop的HDFS進行統一管理。
分布式網絡爬蟲系統借助了Hadoop的分布式平臺架構優勢,在傳統的數據抓取策略中加入了分布式通信概念,大大提高了網絡爬蟲系統的執行效率、運行穩定性和易擴展性,有效緩解了大數據環境中數據自動采集的時延、系統開銷大、準確率低等問題。但這一改進策略主要針對的是靜態網頁設計中的數據抓取,針對動態網頁的數據采集功能尚有欠缺,本研究還將就這一問題展開深入的研究與探討,通過爬蟲算法的策略改進,實現動態頁面中海量數據的快速采集。
[1]陳新. Hadoop平臺中作業調度算法分析與改進研究[J].微型機與應用,2016,35(11):80-82.
[2]馬梅,劉東蘇,李慧.基于大數據的網絡輿情分析系統模型研究[J].情報科學,2016,34(3):25-28.
[3]翟周偉.Hadoop核心技術[M].北京:機械工業出版社,2015.