storm默認參數配置html
storm默認配置參數在defaults.yaml裏,默認參數配置請參考https://github.com/apache/storm/blob/master/conf/defaults.yamljava
相關參數解釋git
Storm配置項github |
備 注apache |
java.library.path app |
Storm自己依賴包的路徑,存在多個時用冒號分隔分佈式 |
storm.local.dirui |
Storm使用的本地文件系統目錄(必須存在而且Storm進程可讀寫)spa |
storm.ZooKeeper.servers操作系統 |
Storm集羣對應的ZooKeeper集羣的主機列表 |
storm.ZooKeeper.port |
Storm集羣對應的ZooKeeper集羣的服務端口,ZooKeeper默認端口爲2181 |
storm.ZooKeeper.root |
Storm的元數據在ZooKeeper中存儲的根目錄 |
storm.cluster.mode |
Storm運行模式,集羣模式需設置爲distributed(分佈式的) |
storm.messaging.transport |
Storm的消息傳輸機制,使用Netty做爲消息傳輸時設置成backtype.storm.messaging.netty.Context |
Nimbus.host |
整個Storm集羣的Nimbus節點 |
Nimbus.Supervisor.timeout.secs |
Storm中每一個被髮射出去的消息處理的超時時間,該時間影響到消息的處理,同時在Storm UI上殺掉一個Topology時的默認時間(kill動做發出後多長時間纔會真正將該Topology殺掉) |
ui.port |
Storm自帶UI,以HTTP服務形式支持訪問,此處設置該HTTP服務的端口(非root用戶端口號須要大於1024) |
ui.childopts |
Storm UI進程的Java參數設置(對Java進程的約束均可以在此設置,如內存等) |
logviewer.port |
此處用於設置該Log Viewer進程的端口(Log Viewer進程也爲HTTP形式,須要運行在每一個Storm節點上) |
logviewer.childopts |
Log Viewer進程的參數設置 |
logviewer.appender.name |
Storm log4j的appender,設置的名字對應於文件storm-0.9.0.1/logback/ cluster.xml中設置的appender,cluster.xml能夠控制Storm logger的級別 |
Supervisor.slots.ports |
Storm的Slot,最好設置成OS核數的整數倍;同時因爲Storm是基於內存的實時計算,Slot數不要大於每臺物理機可運行Slot個數:(物理內存-虛擬內存)/單個Java進程最大可佔用內存數 |
worker.childopts |
Storm的Worker進程的Java限制,有效地設置該參數可以在Topology異常時進行緣由分析: -Xms1024m -Xmx1024m -XX:+UseConcMarkSweepGC 其中:Xms爲單個Java進程最小佔用內存數,Xmx爲最大內存數,設置HeapDumpOnOutOfMemoryError的好處是,當內存使用量超過Xmx時,Java進程將被JVM殺掉同時會生成java_pidxxx.hprof文件;使用MemoryAnalyzer分析hprof文件將可以分析出內存使用狀況從而進行相應的調整、分析是否有內存溢出等狀況 |
zmq.threads |
Storm 0.9.0.1也支持基於ZMQ的消息傳遞機制,此處爲對ZMQ的參數設置;建議使用默認值 |
storm.messaging.netty. |
傳輸的buffer大小,默認1 MB,當Spout發射的消息較大時,此處須要對應調整 |
storm.messaging.netty. storm.messaging.netty. storm.messaging.netty. |
這幾個參數是關於使用Netty做爲底層消息傳輸時的相關設置,須要重視,不然可能因爲bug(https://issues.apache. org/jira/browse/STORM-187)而引發錯誤java.lang.IllegalArgumentException: timeout value is negative |
Topology.debug |
該參數能夠在Topology中覆蓋,表示該Topology是否運行於debug模式。運行於該模式時,Storm將記錄Topology中收發消息等的詳細信息,線上環境不建議打開 |
Topology.acker.executors |
Storm經過Acker機制保證消息的不丟失,此參數用於設置每一個Topology的Acker數量,因爲Acker基本消耗的資源較小,強烈建議將此參數設置在較低的水平(咱們的環境中設置爲1),可在Topology中進行覆蓋 |
Topology.max.spout.pending |
一個Spout Task中處於pending狀態的最大的Tuple數量。該配置應用於單個Task,而不是整個Spout或Topology,可在Topology中進行覆蓋 |
更多參數解釋請參考:http://www.cnblogs.com/chengxin1982/p/4001275.html
注意
須要注意的是,Storm的配置文件爲yaml文件,配置項後面必須跟一個空格才能跟配置值。
除了conf/storm.yaml配置文件以外,還有兩個須要注意的配置。
(1)log4j2/cluster.xml文件,其中能夠配置Storm的日誌級別矩陣信息等。
(2)操做系統的配置(經過ulimit -a查看),其中有兩項信息須要配置。
open files:當前用戶能夠打開的文件描述符數。
max user processes:當前用戶能夠運行的進程數,此參數過小將引發Storm的一個錯誤,以下所示。
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method) [na:1.6.0_35]
at java.lang.Thread.start(Thread.java:640) [na:1.6.0_35]
at java.lang.UNIXProcess$1.run(UNIXProcess.java:141) ~[na:1.6.0_35]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.6.0_35]
操做系統配置信息如圖3-2所示。
默認狀況下,Storm啓動worker進程時,JVM的最大內存是768M。但我在使用過程當中,因爲會在Bolt中加載大量數據,768M內存沒法知足需求,會致使內存溢出程序崩潰。通過研究發現,能夠經過在Strom的配置文件storm.yaml中設置worker的啓動參數: worker.childopts: "-Xmx2048m"該參數會在啓動時傳遞給JVM,而後就能夠在worker中使用2048m內存了。