成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Storm:最火的流式處理框架

開發 架構
在2011年Storm開源之前,由于Hadoop的火紅,整個業界都在喋喋不休地談論大數據。Hadoop的高吞吐,海量數據處理的能力使得人們可以方便地處理海量數據。但是,Hadoop的缺點也和它的優點同樣鮮明——延遲大,響應緩慢,運維復雜。

誕 生

在2011年Storm開源之前,由于Hadoop的火紅,整個業界都在喋喋不休地談論大數據。Hadoop的高吞吐,海量數據處理的能力使得人們可以方便地處理海量數據。但是,Hadoop的缺點也和它的優點同樣鮮明——延遲大,響應緩慢,運維復雜。

有需求也就有創造,在Hadoop基本奠定了大數據霸主地位的時候,很多的開源項目都是以彌補Hadoop的實時性為目標而被創造出來。而在這個節骨眼上Storm橫空出世了。

Storm帶著流式計算的標簽華麗麗滴出場了,看看它的一些賣點:

  • 分布式系統:可橫向拓展,現在的項目不帶個分布式特性都不好意思開源。
  • 運維簡單:Storm的部署的確簡單。雖然沒有Mongodb的解壓即用那么簡單,但是它也就是多安裝兩個依賴庫而已。
  • 高度容錯:模塊都是無狀態的,隨時宕機重啟。
  • 無數據丟失:Storm創新性提出的ack消息追蹤框架和復雜的事務性處理,能夠滿足很多級別的數據處理需求。不過,越高的數據處理需求,性能下降越嚴重。
  • 多語言:實際上,Storm的多語言更像是臨時添加上去似的。因為,你的提交部分還是要使用Java實現。

    下面,我們簡單地認識一下Storm這個產品。

認 識

Storm是一個免費開源、分布式、高容錯的實時計算系統。Storm令持續不斷的流計算變得容易,彌補了Hadoop批處理所不能滿足的實時要求。Storm經常用于在實時分析、在線機器學習、持續計算、分布式遠程調用和ETL等領域。Storm的部署管理非常簡單,而且,在同類的流式計算工具,Storm的性能也是非常出眾的。

Storm主要分為兩種組件Nimbus和Supervisor。這兩種組件都是快速失敗的,沒有狀態。任務狀態和心跳信息等都保存在Zookeeper上的,提交的代碼資源都在本地機器的硬盤上。

  • Nimbus負責在集群里面發送代碼,分配工作給機器,并且監控狀態。全局只有一個。
  • Supervisor會監聽分配給它那臺機器的工作,根據需要啟動/關閉工作進程Worker。每一個要運行Storm的機器上都要部署一個,并且,按照機器的配置設定上面分配的槽位數。
  • Zookeeper是Storm重點依賴的外部資源。Nimbus和Supervisor甚至實際運行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根據Zookeerper上的心跳和任務運行狀況,進行調度和任務分配的。
  • Storm提交運行的程序稱為Topology。
  • Topology處理的最小的消息單位是一個Tuple,也就是一個任意對象的數組。
  • Topology由Spout和Bolt構成。Spout是發出Tuple的結點。Bolt可以隨意訂閱某個Spout或者Bolt發出的Tuple。Spout和Bolt都統稱為component。

下圖是一個Topology設計的邏輯圖的例子。

topology例子2

下圖是Topology的提交流程圖。

提交2   

下圖是Storm的數據交互圖。可以看出兩個模塊Nimbus和Supervisor之間沒有直接交互。狀態都是保存在Zookeeper上。Worker之間通過ZeroMQ傳送數據。

數據流圖 

雖然,有些地方做得還是不太好,例如,底層使用的ZeroMQ不能控制內存使用(下個release版本,引入了新的消息機制使用netty代替ZeroMQ),多語言支持更多是噱頭,Nimbus還不支持HA。但是,就像當年的Hadoop那樣,很多公司選擇它是因為它是唯一的選擇。而這些先期使用者,反過來促進了Storm的發展。

#p#

發 展

Storm已經發展到0.8.2版本了,看一下兩年多來,它取得的成就:

  • 有50個大大小小的公司在使用Storm,相信更多的不留名的公司也在使用。這些公司中不乏淘寶,百度,Twitter,Groupon,雅虎等重量級公司。
  • 從開源時候的0.5.0版本,到現在的0.8.0+,和即將到來的0.9.0+。先后添加了以下重大的新特性:

    • 使用kryo作為Tuple序列化的框架(0.6.0)
    • 添加了Transactional topologies(事務性拓撲)的支持(0.7.0)
    • 添加了Trident的支持(0.8.0)
    • 引入netty作為底層消息機制(0.9.0)
Transactional topologies和Trident都是針對實際應用中遇到的重復計數問題和應用性問題的解決方案。可以看出,實際的商用給予了Storm很多良好的反饋。
  • 在GitHub上超過4000個項目負責人。Storm集成了許多庫,支持包括Kestrel、Kafka、JMS、Cassandra、Memcached以及更多系統。隨著支持的庫越來越多,Storm更容易與現有的系統協作。

    Storm的擁有一個活躍的社區和一群熱心的貢獻者。過去兩年,Storm的發展是成功的。

當 前

Storm被廣泛應用于實時分析,在線機器學習,持續計算、分布式遠程調用等領域。來看一些實際的應用:

  • 一淘-實時分析系統pora:實時分析用戶的屬性,并反饋給搜索引擎。最初,用戶屬性分析是通過每天在云梯上定時運行的MR job來完成的。為了滿足實時性的要求,希望能夠實時分析用戶的行為日志,將最新的用戶屬性反饋給搜索引擎,能夠為用戶展現最貼近其當前需求的結果。
  • 攜程-網站性能監控:實時分析系統監控攜程網的網站性能。利用HTML5提供的performance標準獲得可用的指標,并記錄日志。Storm集群實時分析日志和入庫。使用DRPC聚合成報表,通過歷史數據對比等判斷規則,觸發預警事件。

    如果,業務場景中需要低延遲的響應,希望在秒級或者毫秒級完成分析、并得到響應,而且希望能夠隨著數據量的增大而拓展。那就可以考慮下,使用Storm了。

  • 試想下,如果,一個游戲新版本上線,有一個實時分析系統,收集游戲中的數據,運營或者開發者可以在上線后幾秒鐘得到持續不斷更新的游戲監控報告和分析結果,然后馬上針對游戲的參數和平衡性進行調整。這樣就能夠大大縮短游戲迭代周期,加強游戲的生命力(實際上,zynga就是這么干的!雖然使用的不是 Storm……Zynga研發之道探秘:用數據說話)。 

  • 除了低延遲,Storm的Topology靈活的編程方式分布式協調也會給我們帶來方便。用戶屬性分析的項目,需要處理大量的數據。使用傳統的MapReduce處理是個不錯的選擇。但是,處理過程中有個步驟需要根據分析結果,采集網頁上的數據進行下一步的處理。這對于MapReduce來說就不太適用了。但是,Storm的Topology就能完美解決這個問題。基于這個問題,我們可以畫出這樣一個Storm的Topology的處理圖。

用戶分詞

我們只需要實現每個分析的過程,而Storm幫我們把消息的傳送和接受都完成了。更加激動人心的是,你只需要增加某個Bolt的并行度就能夠解決掉某個結點上的性能瓶頸。

未 來

 在流式處理領域里,Storm的直接對手是S4。不過,S4冷淡的社區、半成品的代碼,在實際商用方面輸給Storm不止一條街。

 如果把范圍擴大到實時處理,Storm就一點都不寂寞了。

  • Puma:Facebook使用puma和Hbase相結合來處理實時數據,使批處理 計算平臺具備一定實時能力。 不過這不算是一個開源的產品。只是內部使用。
  • HStreaming:嘗試為Hadoop環境添加一個實時的組件HStreaming能讓一個Hadoop平臺在幾天內轉為一個實時系統。分商業版和免費版。也許HStreaming可以借Hadoop的東風,撼動Storm。
  • Spark Streaming:作為UC Berkeley云計算software stack的一部分,Spark Streaming是建立在Spark上的應用框架,利用Spark的底層框架作為其執行基礎,并在其上構建了DStream的行為抽象。利用 DStream所提供的api,用戶可以在數據流上實時進行count,join,aggregate等操作。

    當然,Storm也有Yarn-Storm項目,能讓Storm運行在Hadoop2.0的Yarn框架上,可以讓Hadoop的MapReduce和Storm共享資源。

總 結

知乎上有一個挺好的問答: 問:實時處理系統(類似s4, storm)對比直接用MQ來做好處在哪里?  答:好處是它幫你做了: 1) 集群控制。2) 任務分配。3) 任務分發 4) 監控 等等。

需要知道Storm不是一個完整的解決方案。使用Storm你需要加入消息隊列做數據入口,考慮如何在流中保存狀態,考慮怎樣將大問題用分布式去解決。解決這些問題的成本可能比增加一個服務器的成本還高。但是,一旦下定決定使用了Storm并解決了那些惱人的細節,你就能享受到Storm給你帶來的簡單,可拓展等優勢了。

技術的發展日新月異,數據處理領域越來越多優秀的開源產品。Storm的過去是成功的,將來會如何發展,我們拭目以待吧。

后記

本文的重點是描述Storm的應用場景和未來的發展前景,讓大家對Storm有一個初步的印象。如果,要落地使用的朋友,在網上可以找到很多優秀的Storm的技術文章。例如:Storm的核心貢獻者徐明明的博客和淘寶關于storm的文章。

原文鏈接:http://tech.uc.cn/?p=2159

責任編輯:林師授 來源: UC技術博客
相關推薦

2015-03-16 14:54:06

大數據流式大數據大數據處理

2014-08-27 09:45:30

JavaScriptJavaScript

2019-07-11 16:06:03

Python編程語言設計

2025-01-23 09:09:29

2013-09-12 15:51:56

2013-01-04 16:25:48

IT職位架構師

2016-01-04 08:52:11

2022-03-01 08:40:34

StormHadoop批處理

2010-09-02 12:32:51

2015-12-28 10:56:10

react nativ前端

2015-12-28 11:09:17

React Nativ前端

2024-03-05 10:32:16

2010-08-17 09:05:45

2014-06-11 09:27:08

Docker云計算

2013-05-30 10:31:03

Android開發移動開發Android開源項目

2012-10-29 14:18:58

開源云計算

2013-07-05 10:59:02

GitHub

2024-07-08 09:49:54

2024-02-04 16:22:13

Python流式輸出開發

2011-11-15 09:42:35

云存儲云計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久一区视频 | 日韩视频三区 | 久久99精品国产99久久6男男 | 美女拍拍拍网站 | 97人人超碰| 国产精品久久久久久久久久妇女 | 成人午夜影院 | 在线播放国产视频 | 亚洲一区中文字幕 | 国产午夜精品一区二区三区四区 | 狠狠亚洲| 欧美亚洲视频在线观看 | xnxx 日本免费 | 国产成人99久久亚洲综合精品 | 国产精品欧美精品 | 免费观看毛片 | 久久久入口 | 国产激情一区二区三区 | 亚洲免费视频网站 | 韩日精品在线观看 | 亚洲精品视频导航 | 在线观看成年视频 | 国产美女免费视频 | 伊人焦久影院 | 国产精品入口 | 国产精品久久久99 | 精品久久久久香蕉网 | 国产成都精品91一区二区三 | 成人免费观看男女羞羞视频 | 日韩在线中文字幕 | 久久久久久亚洲精品不卡 | 日韩欧美在线观看视频 | 狠狠做深爱婷婷综合一区 | 国产精品国产三级国产a | 国产精品中文字幕在线 | 欧美 日韩 国产 一区 | 亚洲欧美激情精品一区二区 | 日韩三级 | 欧美中国少妇xxx性高请视频 | 国产乱码精品一品二品 | 日韩一级黄色毛片 |