Yahoo! s4和Twitter storm的粗略比較
Posted on 2011-11-08 22:25 dennis 閱讀(13178) 評論(14) 編輯 收藏 所屬分類: java 、Hadoop與分布式Items\Projects |
Yahoo! s4 |
Twitter Storm |
協(xié)議 |
Apache license 2.0 |
Eclipse Public License 1.0 |
開發(fā)語言 |
Java |
Clojure,Java,Clojure編寫了核心代碼 |
結(jié)構(gòu) |
去中心化的對等結(jié)構(gòu) |
有中心節(jié)點(diǎn)nimbus,但非關(guān)鍵 |
通信 |
可插拔的通訊層,目前是基于UDP的實(shí)現(xiàn) | 基于facebook開源的thrift框架 |
事件/Stream |
<K,A>序列,用戶可自定義事件類 | 提供Tuple類,用戶不可自定義事件類, 但是可以命名field和注冊序列化器 |
處理單元 | Processing Elements,內(nèi)置PE處理 count,join和aggregate等常見任務(wù) |
Bolt,沒有內(nèi)置任務(wù),提供IBasicBolt處理 自動ack |
第三方交互 |
提供API,Client Adapter/Driver,第三方客戶端輸入或者輸出事件 | 定義Spout用于產(chǎn)生Stream,沒有標(biāo)準(zhǔn)輸出API |
持久化 | 提供Persist API規(guī)范,可根據(jù)頻率或者次數(shù)做 持久化 |
無特定API,用戶可自行選擇處理 |
可靠處理 | 無,可能會丟失事件 | 提供對事件處理的可靠保證(可選) |
路由 | EventType + Keyed attribute + value匹配 內(nèi)置count,join和aggregate標(biāo)準(zhǔn)任務(wù) | Stream Groupings: Shuffle,Fields,All,Global,None,Direct 非常靈活的路由方式 |
多語言支持 | 暫時(shí)只支持Java | 多語言支持良好,本身支持Java,Clojure, 其他非JVM語言通過thrift和進(jìn)程間通訊 |
Failover | 部分支持,數(shù)據(jù)無法failover | 部分支持,數(shù)據(jù)同樣無法failover |
Load Balance | 不支持 | 不支持 |
并行處理 | 取決于節(jié)點(diǎn)數(shù)目,不可調(diào)節(jié) | 可配置worker和task數(shù)目,storm會盡量將worker和task均勻分布 |
動態(tài)增刪節(jié)點(diǎn) | 不支持 | 支持 |
動態(tài)部署 | 不支持 | 支持 |
web管理 | 不支持 | 支持 |
代碼成熟度 | 半成品 | 成熟 |
活躍度 | 低 | 活躍 |
編程 | 編程 + XML配置 | 純編程 |
參考文檔 | http://docs.s4.io/ | https://github.com/nathanmarz/storm/wiki/ http://xumingming.sinaapp.com/category/storm/ (非常好的中文翻譯) |