實時流式計算框架Storm 0.9.0發(fā)布通知(中文版)
? 我們很高興宣布Storm 0.9.0已經成功發(fā)布,你可以從 the downloads page 下載. 本次發(fā)布對茁壯成長的Storm來說是一次巨大的進步。
? 我們追加了一些新特性,你會在下面看到詳細的介紹, 此外這次發(fā)布的另一個著重點是修復了大量跟穩(wěn)定性相關的 bug. 雖然很多用戶已經在自己的環(huán)境中把0.9.x版本的Storm成功運行起來,但我們不保證那些版本的穩(wěn)定性。0.9.0是目前最穩(wěn)定的版本,我們強烈推薦各位使用,特別是0.8.x的用戶們。
特性1:Netty做消息傳輸層
? 第一個重大的特點是新的傳輸層。我們引入了使用純Java語言編寫的Netty作為我們的傳輸層,這個工作是由好 基友 Yahoo! Engineering 完成的。關于Storm的核心消息傳輸層能以插拔形式更換這一點,我想大家都知道了,只可惜原來只有ZeroMQ,而現(xiàn)在Storm提供了兩種消息傳輸層實現(xiàn),分別是原來的ZeroMQ和新的Netty。
? 在以前的版本里,Storm只能依賴ZeroMQ做消息的傳輸,但它其實并不好,我也不曉得Nathan為什么頭腦熱使用了ZeroMQ。為什么ZeroMQ不好呢?這是由于:
1.ZeroMQ是一個本地化的消息庫,它過度依賴操作系統(tǒng)環(huán)境;
2.安裝起來比較麻煩;
3.ZeroMQ的穩(wěn)定性在不同版本之間差異巨大,并且目前只有2.1.7版本的ZeroMQ能與Storm協(xié)調的工作。
? 我們引入Netty的原因是:
1.平臺隔離,Netty是一個純Java實現(xiàn)的消息隊列,可以幫助Storm實現(xiàn)更好的跨平臺特性,同時基于JVM的實現(xiàn)可以讓我們對消息有更好的控制;
2.高性能,Netty的性能要比ZeroMQ快兩倍左右,這里有一篇文章 this blog post ?專門比較了ZeroMQ和Netty的性能(待翻譯)。
3. 安全性認證,使得我們將來要做的 worker 進程之間的認證授權機制成為可能。
? 如果要在Storm里使用Netty做傳輸層,只需要簡單的把下面的內容加入到storm.yaml中,并根據(jù)你的實際情況調整參數(shù)即可:
storm.messaging.transport: "backtype.storm.messaging.netty.Context"
storm.messaging.netty.server_worker_threads: 1
storm.messaging.netty.client_worker_threads: 1
storm.messaging.netty.buffer_size: 5242880
storm.messaging.netty.max_retries: 100
storm.messaging.netty.max_wait_ms: 1000
storm.messaging.netty.min_wait_ms: 100
? 如果你不喜歡ZeroMQ或者Netty,你也可以通過實現(xiàn)
backtype.storm.messaging.IContext
interface來用自己的消息傳輸層,但是要滿足幾個條件,這里就不多說了。
特性2:日志查看UI
? 新版本的Storm增加了一個很給力的特性用來調試和監(jiān)視topology——logviewer進程。在早期的版本里,查看Worker節(jié)點的日志決定于Worker節(jié)點的位置(host/port),典型的是通過Storm UI,然后用ssh連接那個主機查看該主機上worker的日志文件。在最新的日志查看機制里,現(xiàn)在可以很容易的去訪問一個指定worker節(jié)點的日志,你只需要在瀏覽器中的StormUI里點擊worker的port就可以了。
新的logviewer進程與supervisor是相對獨立的進程,如果要在新的Storm里啟動它,你只需要在集群的supervisor節(jié)點執(zhí)行如下命令:
??? $ storm logviewer
特性3:跨平臺
? 在以前的版本里,如果想在Windows平臺上運行Storm,你需要安裝ZeroMQ,修改Storm的源碼,追加一些Windows平臺特定的腳本。而在新的版本里,因為用netty替換了ZeroMQ,由于netty用純java實現(xiàn),因此使得Storm具有更好的跨平臺特性,現(xiàn)在要在Windows上運行Storm比以前容易很多。
特性4:安全
? 安全,認證,授權這些一直是非常重要的領域,我們在后續(xù)會持續(xù)追加相關的特性,Storm0.9.0提供了API用來實現(xiàn)可插拔的Tuple序列化,并且有一個基于BlowFish的加密算法來用于加密Tuple的實現(xiàn)。
特性5:API 兼容性和升級
? 對大多數(shù)的Storm開發(fā)者來說,更新到0.9.0只是簡單的更新它的依賴包而已,Storm的核心API自從0.8.2以來變更很少。而在生產環(huán)境中的開發(fā)運維方面,如果要更新最新的Storm,最好在升級之前把已經存在的狀態(tài)信息給清空,比如ZooKeeper上的信息和storm.local.dir配置的信息。
特性6:日志方式變更
? 另一個非常大的變化是對日志的改變,Storm里面大量使用slf4j 的API,而有些Storm的依賴庫或Storm的使用者則依賴于log4j的API。所以現(xiàn)在Storm改為依賴于 log4j-over-slf4j ,它可以在log4j與slf4j之間架起一座橋梁。這些改變會涉及到已經使用log4jAPI的拓撲和拓撲組件。總之,如果可以的話,還是盡可能的使用slf4j的API來做日志記錄吧!
鳴謝
? 最后特別感謝那些為Storm的貢獻的小伙伴們,不管是貢獻代碼、文檔、提BUG或者在郵件列表里為其他人提供幫助的人,你們都功不可沒,Nathan愛你們,Storm小組愛你們。
0.9.0變更日志
- Update build configuration to force compatibility with Java 1.6
- Fixed a netty client issue where sleep times for reconnection could be negative (thanks brndnmtthws)
- Fixed an issue that would cause storm-netty unit tests to fail
- Added configuration to limit ShellBolt internal _pendingWrites queue length (thanks xiaokang)
- Fixed a a netty client issue where sleep times for reconnection could be negative (thanks brndnmtthws)
- Fixed a display issue with system stats in Storm UI (thanks d2r)
- Nimbus now does worker heartbeat timeout checks as soon as heartbeats are updated (thanks d2r)
- The logviewer now determines log file location by examining the logback configuration (thanks strongh)
- Allow tick tuples to work with the system bolt (thanks xumingming)
- Add default configuration values for the netty transport and the ability to configure the number of worker threads (thanks revans2)
- Added timeout to unit tests to prevent a situation where tests would hang indefinitely (thanks d2r)
- Fixed an issue in the system bolt where local mode would not be detected accurately (thanks miofthena)
-
Fixed?
storm jar
?command to work properly when STORM_JAR_JVM_OPTS is not specified (thanks roadkill001) - All logging now done with slf4j
- Replaced log4j logging system with logback
- Logs are now limited to 1GB per worker (configurable via logging configuration file)
- Build upgraded to leiningen 2.0
- Revamped Trident spout interfaces to support more dynamic spouts, such as a spout who reads from a changing set of brokers
- How tuples are serialized is now pluggable (thanks anfeng)
- Added blowfish encryption based tuple serialization (thanks anfeng)
- Have storm fall back to installed storm.yaml (thanks revans2)
- Improve error message when Storm detects bundled storm.yaml to show the URL's for offending resources (thanks revans2)
- Nimbus throws NotAliveException instead of FileNotFoundException from various query methods when topology is no longer alive (thanks revans2)
- Escape HTML and Javascript appropriately in Storm UI (thanks d2r)
- Storm's Zookeeper client now uses bounded exponential backoff strategy on failures
- Automatically drain and log error stream of multilang subprocesses
- Append component name to thread name of running executors so that logs are easier to read
- Messaging system used for passing messages between workers is now pluggable (thanks anfeng)
- Netty implementation of messaging (thanks anfeng)
- Include topology id, worker port, and worker id in properties for worker processes, useful for logging (thanks d2r)
- Tick tuples can now be scheduled using floating point seconds (thanks tscurtu)
- Added log viewer daemon and links from UI to logviewers (thanks xiaokang)
- DRPC server childopts now configurable (thanks strongh)
- Default number of ackers to number of workers, instead of just one (thanks lyogavin)
- Validate that Storm configs are of proper types/format/structure (thanks d2r)
- FixedBatchSpout will now replay batches appropriately on batch failure (thanks ptgoetz)
- Can set JAR_JVM_OPTS env variable to add jvm options when calling 'storm jar' (thanks srmelody)
- Throw error if batch id for transaction is behind the batch id in the opaque value (thanks mrflip)
- Sort topologies by name in UI (thanks jaked)
- Added LoggingMetricsConsumer to log all metrics to a file, by default not enabled (thanks mrflip)
- Add prepare(Map conf) method to TopologyValidator (thanks ankitoshniwal)
- Bug fix: Supervisor provides full path to workers to logging config rather than relative path (thanks revans2)
- Bug fix: Call ReducerAggregator#init properly when used within persistentAggregate (thanks lorcan)
- Bug fix: Set component-specific configs correctly for Trident spouts
原文地址: http://storm-project.net/2013/12/08/storm090-released.html
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
