1. 程式人生 > >Storm筆記整理(一):簡介與設計思想

Storm筆記整理(一):簡介與設計思想

大數據 實時計算 Storm

[TOC]


實時計算概述

有別於傳統的離線批處理操作(對很多數據的集合進行的操作),實時處理,說白就是針對一條一條的數據/記錄進行操作,所有的這些操作進行一個匯總(截止到目前為止的所有的統計總和)。

實時計算與離線計算比較

Bounded:有界
    離線計算面臨的操作數據都是有界限的,無論是1G、1T、1P、1EB、1NB
    數據的有界必然會導致計算的有界
UnBounded:無界
    實時計算面臨的操作數據是源源不斷的向水流一樣,是沒有界限的,
    數據的無界必然導致計算的無界

來自Flink官網的說明:

First, 2 types of datasets
    Unbounded: Infinite datasets that are appended to continuously
    Bounded: Finite, unchanging datasets

Second, 2 types of execution models
    Streaming: Processing that executes continuously as long as data is being produced
    Batch: Processing that is executed and runs to completeness in a finite amount of 
           time, releasing computing resources when finished

大數據處理的6大問題

3大計算中心
    離線批處理
    準實時流計算中心
    實時流計算
3大計算引擎
    用戶交互式計算引擎:SQL/ES
    圖計算引擎
    機器學習計算引擎

Storm簡介

ApacheStorm是Twitter開源的一個類似於Hadoop的實時數據處理框架,它原來是由BackType開發,後BackType被Twitter收購,將Storm作為Twitter的實時數據分析系統。

Storm能實現高頻數據和大規模數據的實時處理。

官網資料顯示storm的一個節點1秒鐘能夠處理100萬個100字節的消息([email protected]的CPU,24GB的內存)。(即單節點每秒大概處理95MB左右數據)

官網:<http://storm.apache.org>

Storm和Hadoop比較

  • 數據來源

    HADOOP處理的是HDFS上TB級別的數據(歷史數據),STORM是處理的是實時新增的某一筆數據(實時數據);

  • 處理過程

    HADOOP是分MAP階段到REDUCE階段,STORM是由用戶定義處理流程,流程中可以包含多個步驟,每個步驟可以是數據源(SPOUT)或處理邏輯(BOLT);

  • 是否結束

    HADOOP最後是要結束的,STORM是沒有結束狀態,到最後一步時,就停在那,直到有新數據進入時再從頭開始;

  • 處理速度

    HADOOP是以處理HDFS上TB級別數據為目的,處理速度慢,STORM是只要處理新增的某一筆數據即可,可以做到很快;

  • 適用場景

    HADOOP是在要處理批量數據時用的,不講究時效性,STORM是要處理某一新增數據時用的,要講時效性。

Storm的設計思想

Storm是對流Stream的抽象,流是一個不間斷的無界的連續tuple,註意Storm在建模事件流時,把流中的事件抽象為tuple即元組。

? Storm將流中元素抽象為Tuple,一個tuple就是一個值列表——valuelist,list中的每個value都有一個name,並且該value可以是基本類型,字符類型,字節數組等,當然也可以是其他可序列化的類型。

Storm認為每個stream都有一個stream源,也就是原始元組的源頭,所以它將這個源頭稱為Spout。

有了源頭即spout也就是有了stream,那麽該如何處理stream內的tuple呢。將流的狀態轉換稱為Bolt,bolt可以消費任意數量的輸入流,只要將流方向導向該bolt,同時它也可以發送新的流給其他bolt使用,這樣一來,只要打開特定的spout(管口)再將spout中流出的tuple導向特定的bolt,又bolt對導入的流做處理後再導向其他bolt或者目的地。

技術分享圖片

以上處理過程統稱為Topology即拓撲。拓撲是storm中最高層次的一個抽象概念,它可以被提交到storm集群執行,一個拓撲就是一個流轉換圖,圖中每個節點是一個spout或者bolt,圖中的邊表示bolt訂閱了哪些流,當spout或者bolt發送元組到流時,它就發送元組到每個訂閱了該流的bolt(這就意味著不需要我們手工拉管道,只要預先訂閱,spout就會將流發到適當bolt上)。

拓撲的每個節點都要說明它所發出的元組的字段的name,其他節點只需要訂閱該name就可以接收處理。

技術分享圖片

Storm筆記整理(一):簡介與設計思想