storm配置参数:
https://blog.csdn.net/Simon_09010817/article/details/81236544
其中:
supervisor.heartbeat.frequency.secs supervisor心跳发送频率(多久发送一次) 默认为5s
worker.heartbeat.frequency.secs worker的心跳发送时间间隔 默认为1s
task.heartbeat.frequency.secs task汇报状态心跳时间间隔 默认为3s
查看zookeeper事务日志:
/app/zookeeper/zookeeper-3.4.10/logs/version-2
利用格式化输出其中日志:
java -classpath .:slf4j-api-1.6.1.jar:../zookeeper-3.4.10.jar org.apache.zookeeper.server.LogFormatter /app/zookeeper/zookeeper-3.4.10/logs/version-2/log.1a000178d1
如下:
其中可以看出:
/storm/workerbeats/<topology-id>/supervisorId-port setData的频率为3s
/storm/supervisors/supervisor-id setData的频率为5s
由于心跳频率大,setData过于频繁,并且zk不适合写入,会导致zk出现异常情况。
在storm集成kafka中强依赖zk,由于业务量增大,读写频繁。导致生产环境zookeeper事务日志激增。每天产生4-6G的日志。将日志保留7天调整为3天。但仍需调整心跳频率,保证运行稳定性。
调整:
supervisor.heartbeat.frequency.secs: 10
task.heartbeat.frequency.secs :6
在storm配置文件conf/ storm.yaml 将两个值扩大一倍。
重启storm集群、将运行的topo kill 再重新启动(否则task.heartbeat.frequency.secs不生效)
再次格式化输出上述日志:
可以看出:
/storm/workerbeats/<topology-id>/supervisorId-port setData的频率变为6s了
/storm/supervisors/supervisor-id setData的频率变为5s了。
由此断定,更改的两个storm的参数生效了。
但是worker.heartbeat.frequency.secs 这个参数 作用在何暂处未找到。