Strom基本概念

1、简要介绍Storm

Strom是分布式的实时计算系统,处理速度很快,可以达到毫秒级别,处理数据是一条一条的处理。组成是由一个个topology(拓扑)组成,一个拓扑可以包含多个spout和多个blot

spout只负责接收数据,将数据转换为Tuple(元组)流到blot;

blot可以将spout流过来的数据进行处理,处理后的数据转换Tuple可以继续流向下一个blot或打印到控制台或存入数据库。

2、Strom的四个并发级别

1Node – 服务器级别

属于Strom集群的一份子,执行topology的部分运算;

2Worker – 进程级别

属于Node中的一份子,指的是Node中的JVM进程;

3Executor – 线程级别

属于Worker的一份子,指的是Worker中的一个Java线程;

4Task – 任务

默认情况下一个Executor有一个Task,是spout和blot的实例。

3、Strom的并发控制

默认的并发:一个topology会被分配到一个Node的Worker中,一个Worker中可能运行多个executor,一个executor负责一个task。

修改并发数(以下number是对应运行的数量):

Worker:通过API或配置文件修改,config.setNameWorker(number)

Executor:builder.setSpout(spout_id,number)builder.setBlot(blot_id,number);

Task:builder.setSpout(…).setNumTask(number)

4、在Blot之间数据流分组方式

ShuffleGrouping(随机分组):随机分发数据流中的tuple到各个Blot;

FiledsGrouping(按字段分组):根据指定的字段进行分组,保证相同的字段分配到同一个Blot;

GlobalGrouping(全局分组):将同一个topology下的且在该Blot之前的所有Blot的数据流Tuple汇总起来,(实际生产环境下少用,避免服务器崩溃);

AllGrouping(全复制分组):所有的Tuple复制后分发到后续Blot的所有的Blot;

DirectGrouping(指向性分组):只能流向指定的Blot;

LocalOrShuffleGrouping(本地或随机分组):优先分发到同一个Worker的下一个Blot,否则,随机分发到Blot。

5、Strom的可靠性保证

(关于可靠性保证可参考本人博客:理解分布式数据处理的三个级别

1)至多一次:默认情况下,Strom是此级别的可靠性保证。在网络不稳定的情况下,可能造成数据丢失;

2)至少一次:在Strom中,提供了ack-fail机制来实现至少一次,保证数据一定到达,可能会有多条相同的数据。成功结束调用ack()方法,失败调用fail()方法;

3)恰好一次(了解):借助于API – TransactionTopology来实现。

6、Strom的集群介绍

Strom集群遵从主/从结构。由一个主节点(nimbus)和一个或多个(supervisor)组成。借助于ZooKeeper进行协调服务

1nimbus:一个守护进程,管理、协调和监控在集群上运行的topology,主要任务包括topology的发布,任务的指派,事件处理失败后重新指派任务。

半容错机制:nimbus守护进程在topology运行时宕机,但分配的supervisor和worker正常运行,topology还会一直处理数据,这就是半容错机制。

2supervisor:一个守护进程,等待nimbus分配任务后生成并监控worker执行任务。当worker异常退出后,尝试重新生成worker进程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值