kafka的分佈式爬蟲系統

前言

    幾乎停頓了1年之久,很久沒寫博客了,一方面是在院裏做項目太忙,另一方面是自己也在摸索大數據領域的技術,終於自己搭起來了個基於kafka的分佈式爬蟲程序,可以抓網站的圖像了,不多說,先看抓的圖像數據。

目前存儲在elastic中的圖像記錄條數爲1.7億條,用了13個節點,具體的圖像數據存儲在hbase中。抓取的數據量超過2T,並20臺機器同時抓取保持每天800w條數據增長,每天這麼大的數據量當然需要一個可靠的爬蟲系統。

                                               

  (圖1 elasticsearch中存儲圖像的索引)                                        (圖2 hbase中的圖像)

內容:

爬蟲架構圖

在講如何實現這種龐大的數據爬蟲前先看下這個爬蟲系統的整體架構圖,方便大家理解這個爬蟲能幹什麼事,要幹什麼事。

 

                                 (圖3 分佈式爬蟲架構圖)

上圖3的左邊是我們今天要說的爬蟲系統,圖3 的右邊是圖像的存儲應用系統。存儲應用系統可以將我們抓的數據做實時的流計算和其他有價值的應用。

圖像處理流程

圖像抓下後可以對這些小圖像進行拼接,然後對拼接後的圖像做識別,分類。拼接流程如下:

 

                            (圖4 圖像拼接算法)

這麼大的圖那不是合成到牛年馬月了,不用擔心用分佈式計算,這個用spark就可。算法原理後面單獨講,今天講分佈式爬蟲系統。

拼接圖像的應用

將google地圖上的遙感圖像抓取下來,進行圖像拼接處理,可以做森林植被識別,建築物識別,分析分析,比如某個深山老林新建了一個房,好傢伙,竟然是違法建築,被我查到了。下圖是通過抓取google很多的小圖像,拼接成一個陸家嘴的大衛星圖,絕對高清。

                          (圖5 圖像拼接圖)

爬蟲系統組成

要抓數據首先需要知道要抓什麼數據,因此必須有一個任務的主機來分配要抓的任務。然後,拿到這些任務的機器要能知道這些任務是什麼。最後這些數據抓到了以後如何分類的保存,已經如何處理失敗的任務,總不能某些任務抓圖像失敗後就丟掉了吧。因此我們爬蟲系統主要有3部分組成。(1)任務的發放(2)抓取任務中的數據(3)將任務結果輸出至對應的管道處理

這三部分我還是拆開放到後面的章節講好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章