storm配置详解
storm的配置文件在${STORM_HOME}/conf/storm.yaml。下面详细说明storm的配置信息。
java.libary.path:storm本身依赖包的路径,有多个路径的时候使用冒号隔开
storm.local.dir:storm使用的本地文件系统的目录,storm进程必须对该目录拥有可写的权限
storm.zookeeper.servers:storm集群对应的zookeeper集群的主机列表
storm.zookeeper.port:storm集群对应的zookeeper集群的服务端口,默认的端口是2181
storm.zookeeper.root:storm的元数据在zookeeper中存储的根目录
nimbus.host:整个storm集群的nimbus节点
storm.cluster.mode: storm运行模式,集群模式需要设置为distribution
storm.messaging.transport: storm的消息传输机制,使用Netty的时候设置为backtype.storm.messaging.netty.Context
nimbus.Supervisor.timeout.secs:storm中每个被发射出去的消息处理的超时时间,该时间影响到消息的处理,同时在Storm UI上kill掉一个topolopy的默认时间(kill动作发出多长时间后才会真正的将该Topolopy杀掉)
ui.port: storm UI的对外提供HTTP服务的端口
ui.childopts: storm UI 进程的JAVA参数
logviewer.childopts: Log Viewer进程的参数设置
logviewer.port: logviewer进程的端口号(logviewer进程也以HTTP形式提供,需要运行在每个Storm节点上)
logviewer.appender.name: Storm log4j的appender,设置的名字对应于${STORM_HOME}/logback/cluster.xml中对应的appender,${STORM_HOME}/logback/cluster.xml中可以设置storm的log级别
supervisor.slots.ports: Storm的slot,最好设置为OS核数的整数倍由于Storm是基于内存的实时计算框架,Solt数不要大于每台物理机可以运行的Solt数:(物理内存-虚拟内存)/每个JAVA进程最大可以暂用的内存数
worker.childopts: Storm 的work进程的JAVA参数配置,有效的设置该参数可以在Topolopy异常的时候分析异常原因。-Xmx1g -Xms1g -server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC
topolopy.debug: 是否开启debug模式,线上建议不开启
topolopy.acker.executors: Storm通过ack模式保证消息的不丢失,此参数设置每个topolopy的acker数量,建议将该该参数设置在较低的水平。参数也可以在具体的topolopy中覆盖。
topolopy.max.spout.pending: 一个Spout Task中处于pending状态的最大的Tuple数量。该设置应用与单个Task,而不是Spout和topolopy,可以在具体的topolopy中覆盖。
值得注意的是storm使用的是yaml做配置文件,因此在每个配置项的冒号后面要跟一个空格
除了上述的配置外还有两个地方的配置十分的重要
1.${STORM_HOME}/logback/cluster.xml可以配置storm的日志级别
2.操作系统的配置,其中有两个配置很重要:open files:当前用户可以打开的文件描述符数量 max user processes:当前用户可以运行的进程数
可以通过ulimit -a查看操作系统的配置,结果如下:
core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 160168 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 65536 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited