首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Storm 性能优化(1)

Storm 性能优化(1)

目录
  • 场景假设
  • 调优步骤和方法
  • 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 的一些特性和原理,是进行调优的必要知识储备
返回列表