Storm概念學習系列之storm的特性

?

  不多說,直接上干貨!

?

?

storm的特性

  Storm 是一個開源的分布式實時計算系統,可以簡單、可靠地處理大量的數據流。 Storm支持水平擴展,具有高容錯性,保證每個消息都會得到處理,而且處理速度很快(在一個小集群中,每個節點每秒可以處理數以百萬計的消息)。 Storm 的部署和運維都很便捷,而且更為重要的是,可以使用任意編程語言來開發應用

?

?

?

下面介紹 Storm 的特點
(1)編程模型簡單
  在大數據處理方面, Hadoop 為開發者提供了 MapReduce 原語,使并行批處理程序變得非常簡單和優美。同樣, Storm 也為大數據的實時計算提供了一些簡單優美的原語,這大大降低了開發并行實時處理任務的復雜性,可以快速、高效地開發應用。


(2)可擴展

  在 Storm 集群中真正運行 Topology 的主要有 3 個實體:工作進程、線程和任務。 Storm集群中的每臺機器都可以運行多個工作進程每個工作進程又可創建多個線程每個線程可以執行多個任務,任務是真正進行數據處理的實體,開發的 Spout、 Bolt 就是作為一個或者多個任務的方式執行的。因此,計算任務在多個線程、進程和服務器之間并行進行,支持靈活的水平擴展。


(3)高可靠性
  Storm 可以保證 Spout 發出的每條消息都能被“完全處理”,這也是直接區別于其他實時系統的地方,如 S4。

?

?


注意:

  Spout 發出的消息后續可能會觸發產生成千上萬條消息,可以形象地理解為一棵消息樹,其中 Spout 發出的消息為樹根, Storm 會跟蹤這棵消息樹的處理情況,只有當這棵消息樹中的所有消息都被處理了,Storm 才會認為 Spout 發出的這個消息已經被“完全處理”如果這棵消息樹中的任何一個消息處理失敗了,或者整棵消息樹在限定的時間內沒有“完全處理”,那么 Spout 發出的消息就會重發。

  考慮到盡可能減少內存的消耗, Storm 并不會跟蹤消息樹中的每個消息,而是采用了一些特殊的策略,它把消息樹當作一個整體來跟蹤,對消息樹中所有消息的唯一 ID 進行異或計算,通過是否為 0 來判定 Spout 發出的消息是否被“完全處理”,這極大地節約了內存并簡化了判定邏輯,后面會詳細介紹這種機制。
  在這種模式下,每發送一個消息,都會同步發送一個 ack/fail,對于網絡的帶寬會有一定的消耗,如果對可靠性要求不高,則可使用不同的 emit 接口關閉該模式。
  上面所說的, Storm 保證了每個消息至少被處理一次,但是對于有些計算場合,會嚴格要求每個消息只被處理一次, Storm 的 0.7.0 引入了事務性拓撲,解決了這個問題,后面章節會詳述。

?


(4)高容錯性
  如果在消息處理過程中出了一些異常, Storm 會重新安排這個出問題的處理單元。 Storm保證一個處理單元永遠運行(除非顯式殺掉該處理單元)。當然,如果處理單元中存儲了中間狀態,那么當處理單元重新被 Storm 啟動時,需要將自身處理的中間狀態恢復。

?

(5)支持多種編程語言
  除了用 Java 實現 Spout 和 Bolt,還可以使用其他編程語言來完成這項工作,這一切得益于 Storm 的多語言協議。多語言協議是 Storm 內部的一種特殊協議,允許 Spout 或 Bolt 使用標準輸入和標準輸出來傳遞消息,傳遞的消息為單行文本或多行 JSON 編碼的格式。

  Storm 支持多語言編程主要是通過 ShellBolt、 ShellSpout 和 ShellProcess 這些類來實現的,這些類都實現了 IBolt 和 ISpout 接口,以及讓 Shell 通過 Java 的 ProcessBuilder 類來執行腳本或者程序的協議。

  可以看到,采用這種方式,每個 Tuple 在處理時都需要進行 JSON 的編解碼,因此在吞吐量上會有較大影響。



(6)支持本地模式
  Storm 有一種“本地模式”,也就是在進程中模擬一個 Storm 集群的所有功能,以本地模式運行 Topology 與在集群上運行 Topology 類似,這對于開發和測試來說非常有用


(7)高效
  用 ZeroMQ 作為底層消息隊列,保證消息能被快速處理。

?

轉載于:https://www.cnblogs.com/zlslch/p/5989260.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Confluence 6 配置服務器基礎地址示例

2019獨角獸企業重金招聘Python工程師標準>>> 如果 Confluence 的安裝是沒有安裝在非根目錄路徑(這個是上下文路徑),然后服務器基礎 URL 地址應該包括上下文地址。例如,你的 Confluence 正在運行在下面的地址&#xff1…

BootstrapValidator驗證

bootstrap:能夠增加兼容性的強大框架. 因為項目需要數據驗證,看bootstrapValidator 還不錯,就上手一直,完美兼容,話不多說。 需要引用css: bootstrap.min.css bootstrapValidator.min.css js: jquery-1.10.…

基于ARM9的視頻采集傳輸系統

http://www.ic37.com/htm_tech/2007-11/77189_618093.htm

halcon找矩形頂點的一種方法

主程序: read_image (Image11, 11)*畫仿射矩形 dev_set_color (green) draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)*生成仿射矩形xld gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2) *找頂點工具(基于卡…

老男孩linux運維50期

一、自我介紹:我是來自老男孩Linux運維脫產50期的楊國峰,我以前是學軟件編碼的,但在大學里基本沒怎么學,每一門課都一知半解的,甚至有些連軟件都不會裝,在校期間,我對JAVA、網頁設計等都不感興趣…

博客收藏

http://www.dreamfairy.cn/blog/category/unity3d/轉載于:https://www.cnblogs.com/wantnon/p/5989843.html

移動開發平臺性能比較

jquerymobile是一個mobile平臺下的js框架,跟phonegap沒有一毛錢關系.phonegap實際上在國內占有率不高的,非常多人為了體驗喜歡做傳統的原生手機應用. 而Webapp如今的占有率越來越少,由于越來越多的人不喜歡用手機瀏覽器去體驗專門為移動平臺搭建的站點.我認為你的比較對象應該是…

H264關于RTP協議的實現

完整的C/S架構的基于RTP/RTCP的H.264視頻傳輸方案。此方案中,在服務器端和客戶端分別進行了功能模塊設計。服務器端:RTP封裝模塊主要是對H.264碼流進行打包封裝;RTCP分析模塊負責產牛和發送RTCP…

華為數通HCIE面試題目解密系列之RSTP邊緣端口

以下是華為數通面試考試的一道真題,原題如下; 請舉例說明 stp 的 edge port 的作用,用在什么場景,并且使用 edge port 會碰到什么問題,怎么解決和防止? 提到邊緣端口,我們是在NP課程的交換部分第一次接觸&a…

VS2013 Pro版本密鑰

Visual Studio Professional 2013 KEY(密鑰): XDM3T-W3T3V-MGJWK-8BFVD-GVPKY 轉載于:https://www.cnblogs.com/Mysterious/p/5990358.html

Django:視圖和URL配置

一、視圖1.在mysite文件夾下。創建views.py文件(文件名稱沒有特別的要求);from django.http import HttpResponsedef hello(request):return HttpResponse("Hello world")2.改動mysite文件夾下的urls.py文件;from djang…

u-boot 詳細介紹 .

Bootloader 對于計算機系統來說,從開機上電到操作系統啟動需要一個引導過程。嵌入式Linux系統同樣離不開引導程序,這個引導程序就叫作Bootloader。6.1.1 Bootloader介紹Bootloader是在操作系統運行之前執行的一段小程序。通過這段小程序,我們…

apicloud使用指南

ApiCloud ApiCloud平臺介紹 ApiCloud首頁在線教程文檔ApiCloud是一個國內的Hybird APP平臺,提供Hybird APP一站式開發服務。可以將使用HTML、CSS和JS制作的應用直接編譯為能在安卓和IOS平臺上運行的APP。另外,其所提供的代碼托管和在線編譯服務&#xff…

halcon對光源打光不均勻進行平場矯正

* Image Acquisition 01: Code generated by Image Acquisition 01 *******預處理,生成RGB三通道的平場矯正的圖像 *1.繪制檢測ROI *2.對檢測的ROI進行平場矯正 *3.平場矯正方法采用均值對減方法 read_image (ImageWhite, C:/Users/Administrator/Desktop/平場矯正/…

一般面試題

1.瀏覽器訪問一個網頁的整個過程,附帶連接協議? 2.tcp和upd的區別? 3.tcp報頭? 4.網絡協議的7層和5層分別是什么? 5.ipv6的知識? 6.網絡分包? 7.求素數的改進方法?轉載于:https://ww…

Python 執行代碼的兩種方式

1、交互執行即黑屏命令行執行 優點:即時調時程序,調試方便 缺點:無法永久無法保存代碼 2、即文件存儲代碼執行Python代碼文件 優點:可以永久保存代碼 缺點:調試不方便轉載于:https://www.cnblogs.com/liuxiaowei/p/7163473.html

金屬圓柱求取傾斜角度

方法1: count_seconds (Seconds1)read_image (Image, 9_7750_f3d301de6764d94.jpg)get_image_size (Image, Width, Height)dev_open_window (0, 0, Width, Height, black, WindowHandle)dev_display (Image)rgb1_to_gray (Image, GrayImage)dev_display (GrayImage)…

編程開發之--java多線程學習總結(2)同步代碼塊

1、第一種解決辦法:同步代碼塊,關鍵字synchronized package com.lfy.ThreadsSynchronize;/*** 1、使用同步代碼塊* 語法:synchronized (同步鎖) {//需要同步操作的代碼 }同步鎖:為了保證每個線程都能正常的執行原子操作&a…

swift 隨機數

1.一行代碼生成隨機數 arc4random() 如果要生成一個生成在一定范圍內的隨機整數: func randomIn(#min: Int, max: Int) -> Int { return Int(arc4random()) % (max - min 1) min} 該方法會生成[min, max]范圍內的隨機整數轉載于:https://www.cnblogs.com/qiyiyifan/p/…

u-boot裁減

http://blog.csdn.net/menuconfig/article/details/2276078u-boot裁減的主要方法是通過刪除不需要的命令來減小可執行代碼體積。比如說,如果不需要網絡相關的功能,則可以將網絡相關的所有命令全部刪除,可以節約可觀的flash空間。一般u-boot的…