實時流式計算框架Storm 0.9.0發布通知(中文版)


Storm0.9.0發布通知中文翻譯版(2013/12/10 by 富士通邵賢軍 有錯誤一定告訴我 shaoxianjun@hotmail.com^_^

  我們很高興宣布Storm 0.9.0已經成功發布,你可以從the downloads page下載. 本次發布對茁壯成長的Storm來說是一次巨大的進步。

  我們追加了一些新特性,你會在下面看到詳細的介紹, 此外這次發布的另一個着重點是修復了大量跟穩定性相關的 bug. 雖然很多用戶已經在自己的環境中把0.9.x版本的Storm成功運行起來,但我們不保證那些版本的穩定性。0.9.0是目前最穩定的版本,我們強烈推薦各位使用,特別是0.8.x的用戶們。

特性1:Netty做消息傳輸層

  第一個重大的特點是新的傳輸層。我們引入了使用純Java語言編寫的Netty作為我們的傳輸層,這個工作是由好基友Yahoo! Engineering完成的。關於Storm的核心消息傳輸層能以插拔形式更換這一點,我想大家都知道了,只可惜原來只有ZeroMQ,而現在Storm提供了兩種消息傳輸層實現,分別是原來的ZeroMQ和新的Netty。

  在以前的版本里,Storm只能依賴ZeroMQ做消息的傳輸,但它其實並不好,我也不曉得Nathan為什么頭腦熱使用了ZeroMQ。為什么ZeroMQ不好呢?這是由於:

1.ZeroMQ是一個本地化的消息庫,它過度依賴操作系統環境;

2.安裝起來比較麻煩;

3.ZeroMQ的穩定性在不同版本之間差異巨大,並且目前只有2.1.7版本的ZeroMQ能與Storm協調的工作。

  我們引入Netty的原因是:

1.平台隔離,Netty是一個純Java實現的消息隊列,可以幫助Storm實現更好的跨平台特性,同時基於JVM的實現可以讓我們對消息有更好的控制;

2.高性能,Netty的性能要比ZeroMQ快兩倍左右,這里有一篇文章this blog post 專門比較了ZeroMQ和Netty的性能(待翻譯)。

3. 安全性認證,使得我們將來要做的 worker 進程之間的認證授權機制成為可能。

  如果要在Storm里使用Netty做傳輸層,只需要簡單的把下面的內容加入到storm.yaml中,並根據你的實際情況調整參數即可:

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,你也可以通過實現backtype.storm.messaging.IContextinterface來用自己的消息傳輸層,但是要滿足幾個條件,這里就不多說了。

特性2:日志查看UI

  新版本的Storm增加了一個很給力的特性用來調試和監視topology——logviewer進程。在早期的版本里,查看Worker節點的日志決定於Worker節點的位置(host/port),典型的是通過Storm UI,然后用ssh連接那個主機查看該主機上worker的日志文件。在最新的日志查看機制里,現在可以很容易的去訪問一個指定worker節點的日志,你只需要在瀏覽器中的StormUI里點擊worker的port就可以了。

新的logviewer進程與supervisor是相對獨立的進程,如果要在新的Storm里啟動它,你只需要在集群的supervisor節點執行如下命令:

    $ storm logviewer

特性3:跨平台

  在以前的版本里,如果想在Windows平台上運行Storm,你需要安裝ZeroMQ,修改Storm的源碼,追加一些Windows平台特定的腳本。而在新的版本里,因為用netty替換了ZeroMQ,由於netty用純java實現,因此使得Storm具有更好的跨平台特性,現在要在Windows上運行Storm比以前容易很多。

特性4:安全

  安全,認證,授權這些一直是非常重要的領域,我們在后續會持續追加相關的特性,Storm0.9.0提供了API用來實現可插拔的Tuple序列化,並且有一個基於BlowFish的加密算法來用於加密Tuple的實現。

特性5:API 兼容性和升級

  對大多數的Storm開發者來說,更新到0.9.0只是簡單的更新它的依賴包而已,Storm的核心API自從0.8.2以來變更很少。而在生產環境中的開發運維方面,如果要更新最新的Storm,最好在升級之前把已經存在的狀態信息給清空,比如ZooKeeper上的信息和storm.local.dir配置的信息。

特性6:日志方式變更

  另一個非常大的變化是對日志的改變,Storm里面大量使用slf4j 的API,而有些Storm的依賴庫或Storm的使用者則依賴於log4j的API。所以現在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM