Storm集群下运行Topology

Storm数据流分组

Tuple在Bolt组件之间的传输规则
在这里插入图片描述
随机分组:Tuple随机分发到每Bolt组件,并保证每个Bolt组件分发的Tuple数量一致
字段分组:相同Key被分配到同一个Bolt组件,统计单词频次采用这种分组策略
全复制分组:每一个Tuple都会被分配到所有的Bolt组件
全局分组:所有的Tuple分配到一个Bolt组件
不分组:

Storm并发机制

在这里插入图片描述
一台Node机器节点:一个工作节点服务,运行一个Supervisor程序
一个worker进程:一个工作节点可以运行1个或多个worker进程
一个Executor执行线程:一个worker进程中运行在JVM上的一个或多个线程
一个Task实例:一个spout对象实例或bolt对象实例,一般Executor执行线程运行一个Task实例
Storm的并发机制,可以从增加worker进程数或executor线程数来考虑‘。

public class WordCountTopology {

	public static void main(String[] args) throws Exception {
		Config conf=new Config();
		
		//--设置当前拓扑的worker进程并发度,默认是1个
		conf.setNumWorkers(2);
		
		WordCountSpout spout=new WordCountSpout();
		SplitBolt splitBolt=new SplitBolt();
		WordCountBolt wordCountBolt=new WordCountBolt();
		PrintBolt printBolt=new PrintBolt();
		
		TopologyBuilder builder=new TopologyBuilder();
		
		//--设置组件的线程并发度和Task并发度,如果线程的并发度=Task的并发度
		//--则setNumTasks()可以省略,因为这种情况:一个线程运行一个Task
		builder.setSpout("wordcountSpout", spout);
		
		//--随机数据流分组,并设置2个线程去执行splitBolt任务,每个线程执行2个任务
		builder.setBolt("splitBolt", splitBolt,2).setNumTasks(4).shuffleGrouping("wordcountSpout");
		
		//--字段数据流分组,确保代码中指定的key字段对应的值,
		//--相同的值落到同一个Bolt里
		builder.setBolt("wordcountBolt", wordCountBolt,2).setNumTasks(2).fieldsGrouping("splitBolt",new Fields("word"));
		
		//--全局分组,会将所有数据汇聚到一个Bolt上
		builder.setBolt("printBolt", printBolt).globalGrouping("wordcountBolt");
		
		StormTopology topology=builder.createTopology();
		
		//--集群模式的提交
		StormSubmitter cluster=new StormSubmitter();
		cluster.submitTopology("wordCountTopology",conf, topology);
	}
}

集群运作模式

提交jar包到集群
%STORM_HOME%/bin storm jar /* /*.xxx.jar 驱动类
主节点收到jar包后,分发jar包到工作节点
工作节点收到jar包
主节点指派Task任务到工作节点,并指示工作节点生成进程和线程来执行Task任务

工作节点和zookeeper之间通过心跳机制,在zk上记录工作节点的工作状态和任务执行情况。主节点和zk之间也建立心跳机制,如果主节点发现某个工作节点没有上报心跳,则主节点认为工作节点服务停止,会把分配给该工作节点的Task,重新分配给一个工作节点来执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值