基於hadoop的網路爬蟲設計1 0

2021-06-22 17:55:48 字數 905 閱讀 7835

一。用hadoop作網路爬蟲的原因

爬蟲程式的海量計算特性要求必須要用分布式方式來實現。一般爬蟲爬取的是整個網際網路上的所有或部分資料,這個資料量一般是p byte級,至少也是t byte級,因此用分布式的方式來獲取這是不二之選。在眾多的分布式計算框架裡hadoop絕對是個中翹楚,從hadoop的使用者名單中可以看出hadoop的應用範圍已經非常廣泛,hadoop本身已經接近成熟。因此hadoop是首選。

hadoop提供了自動的集群管理,任務分配,負載平衡。因此在hadoop之上構建爬蟲程式可以省略這部分**,這將極大的減少**量。

二。主要思路

1.遍歷整個網路的演算法:網頁之間是通過link連線起來的,link把所有的頁面連線成了乙個網,這個網可以用資料結構裡的圖來表示,用遍歷圖的演算法就可以遍歷整個網路了。

2任務切分:以站點為單位來切分爬取工作,每個站點對應乙個map任務。系統要維護乙個全域性站點表,站點表用來記錄那些站點已經爬取過,那些尚未爬取,那些正在爬取,並且還要向其中加入新發現的站點。

3.map階段:每個map完成乙個站點的爬取任務,同時把發現的新站點加入到全域性站點表。生成的就是4.reduce階段:主要任務是把所有的三。心得

爬蟲程式並不是hadoop典型應用場景。hadoop一般應用於海量資料分析和挖掘,這種場景中首先存在著海量輸入資料,並且最終得產出物事乙個資料量很小的分析資料,在map過程中對海量資料進行劃分成小塊並進行分布式處理,在reduce的過程中將大量的中間資料進行合併,並最終得到較小的分析結果。

爬蟲程式幾乎沒有輸入,並且最終的產出物是海量資料,這和hadoop的典型應用完全是相反的。在爬蟲程式的應用場景中reduce階段幾乎是多餘的,幾乎可以把reduce階段的工作放到map的末尾來做。

雖然不符合hadoop的典型應用場景,但爬蟲程式一樣可以從hadoop上獲得極大的好處(自動的集群管理,任務分配,負載平衡)。

基於golang的網路爬蟲框架

這是乙個用go語言實現的網路爬蟲框架,本框架的核心在於可定製和可擴充套件,使用者可以根據自己的需要定製各個模組,同時,也給出了乙個實現demo供參考。go語言的初學者也可以通過這個專案熟悉go語言的各種特性,尤其是併發程式設計。1 排程器主體 主要用於啟動和停止整個系統,並且從中獲取一些系統執行的狀...

基於python的網路爬蟲初探

toc基於python的網路爬蟲學習筆記1 常用的主要有兩個庫 1 urllib庫。urllib庫是python內建的http請求庫,可以直接使用。2 requests庫。requests庫是用python語言編寫的。它比更加方便,使用它可以節約我們大量的工作,完全滿足http的測試需求。簡單易用。...

基於Linux C C 的網路爬蟲系統

網路爬蟲概念 是乙個軟體機械人,是可控的,可以按照一定的規則從網際網路上抓取我們所需的資源。目前比較出名的開源爬蟲有labin nutch neritrix,詳見 爬蟲流程 分為配置檔案處理模組 url維護模組和任務排程模組。配置檔案模組 是以檔案形式儲存程式執行時必要的引數,減少輸入時的繁瑣過程。...