StormApplied读书笔记(五) - 18965050/storm-applied GitHub Wiki

Storm调优

  • 修改worker node的worker process数量 通过修改配置文件storm.yaml的supervisor.slots.ports配置项, 并重启supervisor来实现

  • 修改worker process的内存分配 通过修改配置文件storm.yaml的worker.childopts配置项(-Xms, -Xmx), 并重启supervisor来实现. 这个修改会对此worker node上所有的worker process生效

  • 如何了解Topology在哪些worker process上运行 通过storm ui来了解. storm ui中有spout和bolt的相关视图. 在这些视图中可以知道spout和bolt的运行情况

Storm内部结构

  • spout executor并不是我们先前想象的一样,对应一个线程.实际上, 其包含两个线程(主线程,发送线程)和一个tuple队列 spoutexecutor内部结构

  • bolt executor比spout executor多一个队列 bolt executor内部结构

  • 如果两个task不在同一个JVM内,则这就是remote transfer, 涉及到数据的序列化/反序列化. storm默认使用Kryo序列化方式, 不支持的话使用Java序列化方式. 当然, 也可以使用自定义的序列化方式

  • 不同JVM的两个task交互, 比同一个JVM的两个task交互, 多个了输出队列(outgoing queue)和输入队列(ingoing queue) 不同JVMtasks交互