偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Storm分布式實(shí)時大數(shù)據(jù)處理框架

大數(shù)據(jù)
按照storm作者的說法,Storm對于實(shí)時計算的意義類似于Hadoop對于批處理的意義。Hadoop提供了map、reduce原語,使我們的批處理程序變得簡單和高效。

1.什么是Storm

Storm是Twitter開源的分布式實(shí)時大數(shù)據(jù)處理框架,被業(yè)界稱為實(shí)時版Hadoop。隨著越來越多的場景對Hadoop的MapReduce高延遲無法容忍,比如網(wǎng)站統(tǒng)計、推薦系統(tǒng)、預(yù)警系統(tǒng)、金融系統(tǒng)(高頻交易、股票)等等,大數(shù)據(jù)實(shí)時處理解決方案(流計算)的應(yīng)用日趨廣泛,目前已是分布式技術(shù)領(lǐng)域最新爆發(fā)點(diǎn),而Storm更是流計算技術(shù)中的佼佼者和主流。

按照storm作者的說法,Storm對于實(shí)時計算的意義類似于Hadoop對于批處理的意義。Hadoop提供了map、reduce原語,使我們的批處理程序變得簡單和高效。同樣,Storm也為實(shí)時計算提供了一些簡單高效的原語,而且Storm的Trident是基于Storm原語更高級的抽象框架,類似于基于Hadoop的Pig框架,讓開發(fā)更加便利和高效。

2.Storm應(yīng)用場景

推薦系統(tǒng)(實(shí)時推薦,根據(jù)下單或加入購物車推薦相關(guān)商品)、金融系統(tǒng)、預(yù)警系統(tǒng)、網(wǎng)站統(tǒng)計(實(shí)時銷量、流量統(tǒng)計,如淘寶雙11效果圖)、交通路況實(shí)時系統(tǒng)等等。

3.Storm的一些特性

1.適用場景廣泛: storm可以實(shí)時處理消息和更新DB,對一個數(shù)據(jù)量進(jìn)行持續(xù)的查詢并返回客戶端(持續(xù)計算),對一個耗資源的查詢作實(shí)時并行化的處理(分布式方法調(diào)用,即DRPC),storm的這些基礎(chǔ)API可以滿足大量的場景。

2. 可伸縮性高: Storm的可伸縮性可以讓storm每秒可以處理的消息量達(dá)到很高。擴(kuò)展一個實(shí)時計算任務(wù),你所需要做的就是加機(jī)器并且提高這個計算任務(wù)的并行度 。Storm使用ZooKeeper來協(xié)調(diào)集群內(nèi)的各種配置使得Storm的集群可以很容易的擴(kuò)展。

3. 保證無數(shù)據(jù)丟失: 實(shí)時系統(tǒng)必須保證所有的數(shù)據(jù)被成功的處理。 那些會丟失數(shù)據(jù)的系統(tǒng)的適用場景非常窄, 而storm保證每一條消息都會被處理, 這一點(diǎn)和S4相比有巨大的反差。

4. 異常健壯: storm集群非常容易管理,輪流重啟節(jié)點(diǎn)不影響應(yīng)用。

5. 容錯性好:在消息處理過程中出現(xiàn)異常, storm會進(jìn)行重試

6. 語言無關(guān)性: Storm的topology和消息處理組件(Bolt)可以用任何語言來定義, 這一點(diǎn)使得任何人都可以使用storm.

4.storm集群結(jié)構(gòu)

Nimbus 和Supervisors 之間所有的協(xié)調(diào)工作是通過 一個Zookeeper 集群。

Nimbus進(jìn)程和 Supervisors 進(jìn)程是無法直接連接,并且是無狀態(tài)的; 所有的狀態(tài)維持在Zookeeper中或保存在本地磁盤上。

意味著你可以 kill -9 Nimbus 或Supervisors 進(jìn)程,而不需要做備份。

這種設(shè)計導(dǎo)致storm集群具有令人難以置信的穩(wěn)定性,并且無耦合。

5.storm工作原理

Nimbus 負(fù)責(zé)在集群分發(fā)的代碼,topo只能在nimbus機(jī)器上提交,將任務(wù)分配給其他機(jī)器,和故障監(jiān)測。

Supervisor,監(jiān)聽分配給它的節(jié)點(diǎn),根據(jù)Nimbus 的委派在必要時啟動和關(guān)閉工作進(jìn)程。 每個工作進(jìn)程執(zhí)行topology 的一個子集。一個運(yùn)行中的topology 由很多運(yùn)行在很多機(jī)器上的工作進(jìn)程組成。

在Storm中有對于流stream的抽象,流是一個不間斷的無界的連續(xù)tuple,注意Storm在建模事件流時,把流中的事件抽象為tuple即元組

Storm認(rèn)為每個stream都有一個源,也就是原始元組的源頭,叫做Spout(管口)

處理stream內(nèi)的tuple,抽象為Bolt,bolt可以消費(fèi)任意數(shù)量的輸入流,只要將流方向?qū)蛟揵olt,同時它也可以發(fā)送新的流給其他bolt使用,這樣一來,只要打開特定的spout再將spout中流出的tuple導(dǎo)向特定的bolt,bolt又對導(dǎo)入的流做處理后再導(dǎo)向其他bolt或者目的地。

可以認(rèn)為spout就是水龍頭,并且每個水龍頭里流出的水是不同的,我們想拿到哪種水就擰開哪個水龍頭,然后使用管道將水龍頭的水導(dǎo)向到一個水處理器(bolt),水處理器處理后再使用管道導(dǎo)向另一個處理器或者存入容器中。

為了增大水處理效率,我們很自然就想到在同個水源處接上多個水龍頭并使用多個水處理器,這樣就可以提高效率。

這是一張有向無環(huán)圖,Storm將這個圖抽象為Topology(拓?fù)?,Topo就是storm的Job抽象概念,一個拓?fù)渚褪且粋€流轉(zhuǎn)換圖

圖中每個節(jié)點(diǎn)是一個spout或者bolt,每個spout或者bolt發(fā)送元組到下一級組件。

而Spout到單個Bolt有6種流分組策略。

6.Topology

Storm將流中元素抽象為tuple,一個tuple就是一個值列表value list,list中的每個value可以是任意可序列化的類型。拓?fù)涞拿總€節(jié)點(diǎn)都要說明它所發(fā)射出的元組的字段的name,其他節(jié)點(diǎn)只需要訂閱該name就可以接收處理。

7.storm相關(guān)概念

Streams:消息流

消息流是一個沒有邊界的tuple序列,而這些tuples會被以一種分布式的方式并行創(chuàng)建和處理。 每個tuple可以包含多列,字段類型可以是: integer, long, short, byte, string, double, float, boolean和byte array。 你還可以自定義類型 — 只要你實(shí)現(xiàn)對應(yīng)的序列化器。

Spouts:消息源

Spouts是topology消息生產(chǎn)者。Spout從一個外部源(消息隊列)讀取數(shù)據(jù)向topology發(fā)出tuple。 消息源Spouts可以是可靠的也可以是不可靠的。一個可靠的消息源可以重新發(fā)射一個處理失敗的tuple, 一個不可靠的消息源Spouts不會。

Spout類的方法nextTuple不斷發(fā)射tuple到topology,storm在檢測到一個tuple被整個topology成功處理的時候調(diào)用ack, 否則調(diào)用fail。

storm只對可靠的spout調(diào)用ack和fail。

Bolts:消息處理者

消息處理邏輯被封裝在bolts里面,Bolts可以做很多事情: 過濾, 聚合, 查詢數(shù)據(jù)庫等。

Bolts可以簡單的做消息流的傳遞。復(fù)雜的消息流處理往往需要很多步驟, 從而也就需要經(jīng)過很多Bolts。第一級Bolt的輸出可以作為下一級Bolt的輸入。而Spout不能有一級。

Bolts的主要方法是execute(死循環(huán))連續(xù)處理傳入的tuple,成功處理完每一個tuple調(diào)用OutputCollector的ack方法,以通知storm這個tuple被處理完成了。當(dāng)處理失敗時,可以調(diào)fail方法通知Spout端可以重新發(fā)送該tuple。

流程是: Bolts處理一個輸入tuple, 然后調(diào)用ack通知storm自己已經(jīng)處理過這個tuple了。storm提供了一個IBasicBolt會自動調(diào)用ack。

Bolts使用OutputCollector來發(fā)射tuple到下一級Blot。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2017-11-03 15:05:56

Storm數(shù)據(jù)處理服務(wù)器

2018-08-24 10:28:41

大數(shù)據(jù)數(shù)據(jù)分析工具

2016-11-08 12:49:27

大數(shù)據(jù)分布式系統(tǒng)Druid-IO

2023-12-18 11:21:40

MongoDB數(shù)據(jù)庫

2012-12-06 10:59:51

大數(shù)據(jù)

2019-06-27 09:12:43

FlinkStorm框架

2011-12-22 09:21:04

云計算Hadoop大數(shù)據(jù)

2015-03-16 14:54:06

大數(shù)據(jù)流式大數(shù)據(jù)大數(shù)據(jù)處理

2015-11-09 09:58:31

大數(shù)據(jù)Lambda架構(gòu)

2023-12-19 08:03:25

存儲大數(shù)據(jù)節(jié)點(diǎn)

2015-10-15 14:05:51

StormSparkMapReduce

2017-08-22 11:10:44

大數(shù)據(jù)分布式調(diào)度

2015-03-18 09:33:41

大數(shù)據(jù)分布式系統(tǒng)事務(wù)處理

2013-10-16 11:36:08

分布式大數(shù)據(jù)

2018-05-24 13:51:04

華為云

2017-02-15 14:36:12

開源大數(shù)據(jù)TensorFlowO

2012-05-18 10:49:36

SAP大數(shù)據(jù)HANA

2018-04-03 10:33:15

大數(shù)據(jù)

2017-09-06 17:05:54

大數(shù)據(jù)處理流程處理框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號