Storm拓扑,组件之spout、bolt,并行策略

本文介绍了Apache Storm的工作原理,详细阐述了如何设置Spout和Bolt的并行性,包括单个executor和task的配置。讨论了Spout并行策略的重要性,防止数据重复,以及Bolt的并行处理,包括shuffle grouping和field grouping的差异。通过实例展示了如何在Storm中实现有效的数据处理和分布。
摘要由CSDN通过智能技术生成

软件版本:Storm:0.9.3 ,Redis:2.8.19;jedis:2.6.2;

参考:http://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html

一、Storm原理

   Storm简述:Storm中有两个组件:nimbus和supervisor,nimbus主要负责分配资源和schedule和协调任务,supervisor主要启动worker,每个worker可以启动一个到多个executor,一个executor可以启动一个到多个task,(默认一个executor对应一个task)实际执行任务的是task。

二、Storm编程

1. Topology (拓扑)

 1.1 定义spout、bolt以及其关系

 //Topology definition
		TopologyBuilder builder = new TopologyBuilder();
		builder.setSpout("wc-spout",new WCSpout(),Integer.parseInt(args[2]));
		builder.setBolt("split-bolt", new SplitBolt(),Integer.parseInt(args[3]))
			.shuffleGrouping("wc-spout");
		builder.setBolt("count-bolt", new CountBolt(),Integer.parseInt(args[4]))
			.fieldsGrouping("split-bolt", new Fields("word"));

在设置spout和bolt的时候还可以设置并行的个数,即executor的个数,当然也可以设置task的个数,如下代码,两个executor,四个task,则每个executor配置两个task。

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
               .setNumTasks(4)
               .shuffleGrouping("blue-spout);
<代码来自: http://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html>

1.2 配置参数项(在spout和bolt中可通过此项设置获取参数值)

// 定义Configuration
		Config conf = new Config();
		conf.put("storeFrequent", Long.parseLong(args[0]));
		conf.put("slow_fast", args[5]);
		conf.put("printWC", args[6]);
		conf.setNumWorkers(Integer.parseInt(args[1]));
上面的代码除了设置三个变量值之外,还设置了worker的数量;

1.3 提交Topology
集群提交方式:

// 提交任务
		StormSubmitter.submitTopology("wc-redis", conf,builder. createTopology());

其中的“wc-redis”是Topology的名字,后面两个是基本的模式写法,可以就按照上面的写即可。

单机提交方式:

LocalCluster cluster = new LocalCluster();
 cluster. submitTopology("wc-redis", conf,
 builder. createTopology());


2. Spout 

2.1 继承BasiRichSpout

     继承这个类后,定义一个域变量SpoutOutputCollector collector,这个用于输出;

2.2 覆写open方法
     

public void open(@SuppressWarnings("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值