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内存了。