一、靜態數據和流數據
很多企業為了支持決策分析而構建的數據倉庫系統,其中存放的大量歷史數據就是靜態數據。技術人員可以利用數據挖掘和OLAP(On-Line Analytical Processing)分析工具從靜態數據中找到對企業有價值的信息
近年來,在Web應用、網絡監控(電子商務用戶點擊流)、傳感監測(PM2.5檢測)等領域,興起了一種新的數據密集型應用——流數據,即數據以大量、快速、時變的流形式持續到達
實例:PM2.5檢測、電子商務網站用戶點擊流
流數據具有如下特征:
(1)數據快速持續到達,潛在大小也許是無窮無盡的
(2)數據來源眾多,格式復雜
(3)數據量大,但是不十分關注存儲,一旦經過處理,要么被丟棄,要么被歸檔存儲(存儲於數據倉庫)
(4)注重數據的整體價值,不過分關注個別數據
(5)數據順序顛倒,或者不完整,系統無法控制將要處理的新到達的數據元素的順序
二、批量計算和實時計算
批量計算:充裕時間處理靜態數據,如Hadoop。實時性要求不高
流數據數據格式復雜、來源眾多、數據量巨大,不適合采用批量計算,必須采用實時計算,響應時間為秒級。實時性要求高
流計算:實時獲取來自不同數據源的海量數據,經過實時分析處理,獲得有價值的信息(實時、多數據結構、海量)
批量計算關注吞吐量,流計算關注實時性。
三、流計算概念
流計算秉承一個基本理念,即數據的價值隨着時間的流逝而降低,如用戶點擊流。因此,當事件出現時就應該立即進行處理,而不是緩存起來進行批量處理。為了及時處理流數據,就需要一個低延遲、可擴展、高可靠的處理引擎
對於一個流計算系統來說,它應達到如下需求:
高性能:處理大數據的基本要求,如每秒處理幾十萬條數據
海量式:支持TB級甚至是PB級的數據規模
實時性:保證較低的延遲時間,達到秒級別,甚至是毫秒級別
分布式:支持大數據的基本架構,必須能夠平滑擴展
易用性:能夠快速進行開發和部署
可靠性:能可靠地處理流數據
4、流計算框架
目前有三類常見的流計算框架和平台:商業級的流計算平台、開源流計算框架、公司為支持自身業務開發的流計算框架
(1)商業級:IBM InfoSphere Streams和IBM StreamBase
(2)開源流計算框架,代表如下:
Twitter Storm:免費、開源的分布式實時計算系統,可簡單、高效、可靠地處理大量的流數據
Yahoo! S4(Simple Scalable Streaming System):開源流計算平台,是通用的、分布式的、可擴展的、分區容錯的、可插拔的流式系統
(3)公司為支持自身業務開發的流計算框架:
Facebook Puma
Dstream(百度)
銀河流數據處理平台(淘寶)