對互聯網海量數據實時計算的理解

轉自 http://www.cnblogs.com/panfeng412/archive/2011/10/28/realtime-computing-of-big-data.html

1. 實時計算的概念

互聯網領域的實時計算一般都是針對海量數據進行的,除了像非實時計算的需求(如計算結果準確)以外,實時計算最重要的一個需求是能夠實時響應計算結果,一般要求爲秒級。個人理解,互聯網行業的實時計算可以分爲以下兩種應用場景:

1)  數據源是實時的不間斷的,要求對用戶的響應時間也是實時的。

主要用於互聯網流式數據處理。所謂流式數據是指將數據看作是數據流的形式來處理。數據流則是在時間分佈和數量上無限的一系列數據記錄的集合體;數據記錄是數據流的最小組成單元。舉個例子,對於大型網站,活躍的流式數據非常常見,這些數據包括網站的訪問PV/UV、用戶訪問了什麼內容,搜索了什麼內容等。實時的數據計算和分析可以動態實時地刷新用戶訪問數據,展示網站實時流量的變化情況,分析每天各小時的流量和用戶分佈情況,這對於大型網站來說具有重要的實際意義。

2)  數據量大且無法或沒必要預算,但要求對用戶的響應時間是實時的。

主要用於特定場合下的數據分析處理。當數據量很大,同時發現無法窮舉所有可能條件的查詢組合或者大量窮舉出來的條件組合無用的時候,實時計算就可以發揮作用,將計算過程推遲到查詢階段進行,但需要爲用戶提供實時響應[參考鏈接]。

2. 實時計算相關技術

互聯網上海量數據(一般爲日誌流)的實時計算過程可以被劃分爲以下三個階段:數據的產生與收集階段、傳輸與分析處理階段、存儲對對外提供服務階段。下面分別進行簡單的介紹:

2.1 數據實時採集

需求:功能上保證可以完整的收集到所有日誌數據,爲實時應用提供實時數據;響應時間上要保證實時性、低延遲在1秒左右;配置簡單,部署容易;系統穩定可靠等。

目前,互聯網企業的海量數據採集工具,有Facebook開源的Scribe、LinkedIn開源的Kafka、Cloudera開源的Flume,淘寶開源的TimeTunnel、Hadoop的Chukwa等,均可以滿足每秒數百MB的日誌數據採集和傳輸需求。

2.2 數據實時計算

傳統的數據操作,首先將數據採集並存儲在DBMS中,然後通過query和DBMS進行交互,得到用戶想要的答案。整個過程中,用戶是主動的,而DBMS系統是被動的。

但是,對於現在大量存在的實時數據,比如股票交易的數據,這類數據實時性強,數據量大,沒有止境,傳統的架構並不合適。流計算就是專門針對這種數據類型準備的。在流數據不斷變化的運動過程中實時地進行分析,捕捉到可能對用戶有用的信息,並把結果發送出去。整個過程中,數據分析處理系統是主動的,而用戶卻是處於被動接收的狀態。

需求:適應流式數據、不間斷查詢;系統穩定可靠、可擴展性好、可維護性好等。

實時流計算框架:Yahoo開源的S4、Twitter開源的Storm,還有EsperStreambaseHStreaming等。

有關計算的一些注意點:分佈式計算,並行計算(節點間的並行、節點內的並行),熱點數據的緩存策略,服務端計算。

2.3 實時查詢服務

全內存:直接提供數據讀取服務,定期dump到磁盤或數據庫進行持久化。

半內存:使用Redis、Memcache、MongoDB、BerkeleyDB等內存數據庫提供數據實時查詢服務,由這些系統進行持久化操作。

全磁盤:使用HBase等以分佈式文件系統(HDFS)爲基礎的NoSQL數據庫,對於key-value引擎,關鍵是設計好key的分佈。

3. 應用舉例

對於電子商務網站上的店鋪:

1)實時展示一個店鋪的到訪顧客流水信息,包括訪問時間、訪客姓名、訪客地理位置、訪客IP、訪客正在訪問的頁面等信息;

2)顯示某個到訪顧客的所有歷史來訪記錄,同時實時跟蹤顯示某個訪客在一個店鋪正在訪問的頁面等信息;

3)支持根據訪客地理位置、訪問頁面、訪問時間等多種維度下的實時查詢與分析。

更詳細的內容,以後再進一步展開介紹。

4. 總結的話

1)並不是任何應用都做到實時計算纔是最好的。

2)使用哪些技術和框架來搭建實時計算系統,需要根據實際業務需求進行選擇。

3)對於分佈式系統來說,系統的可配置性、可維護性、可擴展性十分重要,系統調優永無止境。

5. 參考鏈接

1)Scribe:https://github.com/facebook/scribe

2)Kafka:http://sna-projects.com/kafka/

3)Flume:https://github.com/cloudera/flume/

4)Chukwa:http://incubator.apache.org/chukwa/

5)TimeTunnel:http://code.taobao.org/p/TimeTunnel/

6)S4:http://s4.io

7)StreamBase:http://www.streambase.com

8)HStreaming:http://www.hstreaming.com/

9)Esper:http://esper.codehaus.org/

10)Storm:http://engineering.twitter.com/2011/08/storm-is-coming-more-details-and-plans.html


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