在 Apache Storm 中,Topology 是一个实时计算应用的逻辑表示,它是一个图(DAG)结构,由多个 Spout 和 Bolt 组件通过流组连接而成。每个 Topology 都会运行在一个或多个工作节点上,并且可以持续运行直到被显式地杀死。
以下是一个简单的 Storm Topology 示例,展示了如何定义一个包含一个 Spout 和两个 Bolt 的 Topology:
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.topology.TopologyBuilder;
import backtype.storm.tuple.Fields;
public class SimpleTopology {
public static void main(String[] args) throws Exception {
// 创建一个 TopologyBuilder 实例
TopologyBuilder builder = new TopologyBuilder();
// 定义一个 Spout
builder.setSpout("spout", new MySpout(), 1);
// 定义第一个 Bolt
builder.setBolt("bolt1", new MyBolt1(), 2)
.shuffleGrouping("spout");
// 定义第二个 Bolt
builder.setBolt("bolt2", new MyBolt2(), 2)
.fieldsGrouping("bolt1", new Fields("field1"));
// 配置 Topology
Config config = new Config();
config.setDebug(true);
// 提交 Topology 到本地集群
LocalCluster cluster = new LocalCluster();
cluster.submitTopology("simple-topology", config, builder.createTopology());
// 等待一段时间后关闭 Topology
Thread.sleep(10000);
cluster.shutdown();
}
}
在这个示例中:
MySpout
是一个自定义的 Spout,负责生成数据。MyBolt1
和 MyBolt2
是两个自定义的 Bolt,分别负责不同的数据处理任务。shuffleGrouping
和 fieldsGrouping
是两种不同的流分组方式,用于控制数据在 Bolt 之间的分布。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。