天天看點

大資料架構簡述(二):資料擷取1.資料分類2.資料擷取元件

1.資料分類

按資料形态,我們把資料分為結構化資料和非結構化資料兩種。

結構化資料如傳統的Data Warehouse資料,字段有固定的長度和語義,計算機程式可以直接處理

非結構化資料有文本資料、圖像資料、自然語言資料等,計算機程式無法直接進行處理,需要進行格式轉換或資訊提取。

2.資料擷取元件

常見的資訊擷取元件包括電信特有的探針技術,為擷取網頁資料常用的爬蟲,采集日志資料的元件Flume,以及用于消息轉發的Kafka消息中間件

2.1 探針

在電信營運商領域,從電信的路由器、交換機上把資料采集上來的專有裝置是探針

大資料架構簡述(二):資料擷取1.資料分類2.資料擷取元件

2.2 網絡爬蟲

網絡爬蟲的主要目的是将網際網路上的網頁下載下傳到本地,形成一個或聯網内容的鏡像備份。

2.2.1 基本原理

下圖是一個典型的網絡爬蟲架構

大資料架構簡述(二):資料擷取1.資料分類2.資料擷取元件

網絡爬蟲的工作流程如下:

1)首先人工選取一部分種子URL

2)将這些URL放入待抓取URL隊列

3)從待抓取URL隊列中取出待抓取URL,解析DNS得到主機IP,并将URL對應的網頁下載下傳下來,存儲到自己的網頁庫中。将這些已抓取的URL放入已抓取URL隊列中

4)分析已抓取網頁中的其他URL,并将URL放入待抓取的URL隊列中,進行下一個循環。

2.2.2 抓取政策

1)深度優先周遊政策

2)廣度悠閑周遊政策

3)反向連結數政策政策

反向連結數是指一個網頁被其他網頁連結指向的數量。反向連結數表示的是一個網頁的内容受到其他人的推薦的程度。是以,很多時候搜尋引擎的抓取系統會使用這個名額來評價網頁的重要程度,進而決定不同網頁的抓取先後順序。

4)PartialPageRank政策

Partial PageRank算法借鑒了PageRank算法的思想:對于已經下載下傳的網頁,連同待抓取URL隊列中的URL,形成網頁集合,計算每個頁面的PageRank值,計算完之後,将待抓取URL隊列中的URL按照PageRank值的大小排列,并按照該順序抓取頁面。如果每次抓取一個頁面,就重新計算PageRank值,一種折中方案是:每抓取K個頁面後,重新計算一次PageRank值。但是這種情況還會有一個問題:對于已經下載下傳下來的頁面中分析出的連結,也就是我們之前提到的未知網頁那一部分,暫時是沒有PageRank值的。為了解決這個問題,會給這些頁面一個臨時的PageRank值:将這個網頁所有傳入連結傳遞進來的PageRank值進行彙總,這樣就形成了該未知頁面的PageRank值,進而參與排序。

5)OPIC政策

該算法實際上也是對頁面進行一個重要性打分。在算法開始前,給所有頁面一個相同的初始現金(cash)。當下載下傳了某個頁面P之後,将P的現金分攤給所有從P中分析出的連結,并且将P的現金清空。對于待抓取URL隊列中的所有頁面按照現金數進行排序。

6)大站優先政策

對于待抓取URL隊列中的所有網頁,根據所屬的網站進行分類。對于待下載下傳頁面數多的網站,優先下載下傳。這個政策也是以叫做大站優先政策。

2.2.3 兩個Python爬蟲執行個體

Python爬蟲執行個體——基于urlib、urlib和re實作

Python爬蟲執行個體——基于BeautifulSoup和requests實作

2.3 日志收集(Flume)

任何一個系統在運作過程中都會産生大量有用的資料。

Flume是一款分布式日志收集系統。

Flume的邏輯架構如下所示:

大資料架構簡述(二):資料擷取1.資料分類2.資料擷取元件

Flume采用了分層架構:分别為agent,collector和storage

1)agent的作用是将資料源的資料發送給collector,資料源包括檔案,網絡端口等

2)collector的作用是将多個agent的資料彙總後,加載到storage中

3)storage是存儲系統,可以是一個普通file,也可以是HDFS,HIVE,HBase,分布式存儲等

4)Master是管理協調agent和collector的配置等資訊,是flume叢集的控制器

2.4 資料分發中間件(Kafka)

資料采集上來後,需要送到後端元件進一步分析,為了簡化傳送邏輯、增強靈活度,在前端和後端的處理之需要一個消息中間件,以保障消息可靠性、比對前後端的速度差。

Kafka架構如下圖所示

大資料架構簡述(二):資料擷取1.資料分類2.資料擷取元件

整個架構包括3個角色

1)生産者:消息和資料産生者

2)代理:緩存代理,Kafka的核心功能

3)消費者:消息和資料消費者

整體架構很簡單,Kafka給Produce和Consumer提供注冊接口,資料從Produce發送到Broker,Broker承擔一個中間緩存和分發的作用,負責分發注冊到系統中的Consumer

繼續閱讀