目录- 场景假设
- 调优步骤和方法
- Storm 的部分特性
- Storm 并行度
- Storm 消息机制
- Storm UI 解析
- 性能优化
场景假设在介绍 Storm 的性能调优方法之前,假设一个场景:
项目组部署了3台机器,计划运行且仅运行 Storm(1.0.1) + Kafka(0.9.0.1) + Redis(3.2.1) 的小规模实验集群,集群的配置情况如下表:
主机名硬件配置角色描述hd012CPUs, 4G RAM, 2TB 机械硬盘nimbus, supervisor, ui, kafka, zkhd022CPUs, 4G RAM, 2TB 机械硬盘supervisor, kafka, zkhd032CPUs, 4G RAM, 2TB 机械硬盘supervisor, kafka, zk现有一个任务,需要实时计算订单的各项汇总统计信息。订单数据通过 kafka 传输。在 Storm 中创建了一个 topology 来执行此项任务,并采用 Storm kafkaSpout 读取该 topic 的数据。kafka 和 Storm topology 的基本信息如下:
- kafka topic partitions = 3
- topology 的配置情况:
[url=][/url]
TopologyBuilder builder = new TopologyBuilder();builder.setSpout("kafkaSpout", new kafkaSpout(), 3);builder.setBolt("filter", new FilterBolt(), 3).shuffleGrouping("kafkaSpout");builder.setBolt("alert", new AlertBolt(), 3).fieldsGrouping("filter", new Fields("order"));Config conf = new Config();conf.setNumWorkers(2);StormSubmitter.submitTopologyWithProgressBar("topology-name", conf, builder.createTopology());[url=][/url]
那么,在此假设下,Storm topology 的数据怎么分发?性能如何调优?这就是下文要讨论的内容,其中性能调优是最终目的,数据分发即 Storm 的消息机制,则是进行调优前的知识储备。
调优步骤和方法Storm topology 的性能优化方法,整体来说,可依次划分为以下几个步骤:
- 硬件配置的优化
- 代码层面的优化
- topology 并行度的优化
- Storm 集群配置参数和 topology 运行参数的优化
其中第一点不是讨论的重点,无外乎增加机器的硬件资源,提高机器的硬件配置等,但是这一步却也不能忽略,因为机器配置太低,很可能后面的步骤怎么调优都无济于事。
Storm 的一些特性和原理,是进行调优的必要知识储备
|