流式計算:數據實時產生、實時傳輸、實時計算、實時展現mysql
表明技術:Flume實時獲取數據、Kafka/metaq實時數據存儲、Storm/JStorm實時數據計算、Redis實時結果緩存、持久化存儲(mysql)。sql
一句話總結:將源源不斷產生的數據實時收集並實時計算,儘量快的獲得計算結果。數據庫
Storm 是用來實時處理數據,特色:低延遲、高可用、分佈式、可擴展、數據不丟失,提供簡單容易理解的接口,便於開發。編程
Storm用於實時計算,Hadoop用於離線計算。緩存
Storm處理的數據保存在內存中,源源不斷;Hadoop處理的數據保存在文件系統中,一批一批。網絡
Storm處理的數據經過網絡傳輸進來;Hadoop的數據保存在磁盤。架構
Storm與Hadoop編程模型類似。分佈式
從海量日誌中分析出特定的數據,並將分析結果存入外部存儲器用來輔助決策。oop
將一個數據從一個系統傳輸到另一個系統,好比將數據同步到Hadoop。線程
將接受到的消息按照某種格式進行轉化,存儲到另一個系統好比消息中間件。
Nimbus:負責資源分配和任務調度
Supervisor:負責接收nimbus分配的任務,啓動和中止屬於本身管理的worker進程。經過配置文件設置當前supervisor上啓動多少個worker。
Worker:運行具體處理組件邏輯的進程,Worker運行的任務類型只有兩種,一種是Spout任務,一種是bolt任務。
Task:worker中每個spout/bolt的線程稱爲一個task。在storm0.8以後,task再也不與物理線程對應,不一樣的spout/bolt的task可能會共享一個物理線程,該線程稱之爲executor。
Topology:Storm中運行的一個實時應用程序的名稱。(拓撲)
Spout:在一個topology中獲取源數據流的組件。一般狀況下spout會從外部數據源中讀取數據,而後轉換爲topology內部的源數據。
Bolt:接受數據而後執行處理的組件,用戶能夠在其中執行本身想要的操做。
Tuple:一次消息傳遞的基本單元,理解爲一組消息就是一個Tuple。
Stream:表示數據的流向。
其中flume用來獲取數據
Kafka用來臨時保存數據
Strom用來計算數據
Redis是個內存數據庫,用來保存數據。