storm配置參數詳解

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 log4jappender,設置的名字對應於文件storm-0.9.0.1/logback/ cluster.xml中設置的appendercluster.xml能夠控制Storm logger的級別

Supervisor.slots.ports

StormSlot,最好設置成OS核數的整數倍;同時因爲Storm是基於內存的實時計算,Slot數不要大於每臺物理機可運行Slot個數:(物理內存虛擬內存)/單個Java進程最大可佔用內存數

worker.childopts

StormWorker進程的Java限制,有效設置該參數可以在Topology異常時進行緣由分析:

-Xms1024m -Xmx1024m -XX:+UseConcMarkSweepGC
-XX: +UseCMSInitiatingOccupancyOnly 
-XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError

中: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_size netty

傳輸的buffer大小,默認1 MB,當Spout發射的消息較大時,此處須要對應調整

storm.messaging.netty.
max_retries

storm.messaging.netty.
max_wait_ms

storm.messaging.netty.
min_wait_ms

幾個參數是關於使用Netty做爲底層消息傳輸時的相關設置,須要重視,不然可能因爲bughttps://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機制保證消息的不丟失,此參數用於設置每一個TopologyAcker數量,因爲Acker基本消耗的資源較小,強烈建議將此參數設置在較低的水平(咱們的環境中設置1),可在Topology中進行覆蓋

Topology.max.spout.pending

一個Spout Task中處於pending狀態的最大的Tuple數量。該配置應用於單個Task,而不是整個SpoutTopology,可在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內存了。

相關文章
相關標籤/搜索