Storm数据流分组与数据保障机制

数据流分组:

数据流分组定义了一个数据流的Tuple如何分发给Topology中不同的Bolt的Task。


Storm定义了七种内置数据流分组的方式:

Shuffle Grouping  (随机分组)这种方式会随机分发

Fields Grouping   (字段分组)根据指定字段的值进行分组

All Grouping          (全复制分组) 将所有的Tuple复制分发给所有的Bolt Task。

Globle Grouping  (全局分组) 将所有的Tuple路由到唯一一个Task上,Storm按照最小的Task ID来选择接受数据的Task。注意,当使用全局分组方式时,设置Bolt的Task并发度是没有意义的,同时要注意所有的Tuple转发到一个JVM实例上,可能会引起JVM瓶颈

None Grouping    (不分组) 在功能上和随机分组相同,是为了将来预留的

Direc Grouping    (指向型分组)调用emitDirect()方法来判断一个Tuple应该由哪个Task来接收,只能在声明了是指向型的数据流上使用

Local or Shuffle Grouping(本地或随机分组)


数据保障机制:

Spout可靠性:

      Bolt每收到一个Tuple,都需要向上游确认应答ack,如果Tuple树上的每个Bolt都进行了确认应答,Spout会调用ack方法来标明这条消息已经完全处理了。



nimbus的工作机制:

     nimbus守护进程的主要职责是管理,协调和监控在集群上运行的Topology,包括Topology的发布,任务指派,事件处理失败时重新指派任务,将Topology发布到Storm集群,将预先打包成Jar文件的Topology和配置信息提交到nimbus服务器上,一旦nimbus接收到了Topology的压缩包,会将Jar包分发到足够数量的supervisor节点上,将supervisor节点接收到了Topology压缩文件,nimbus就会指派Task(Bolt和Spout实例)到每个supervisor并且发送信息指示supervisor生成足够的worker来执行指派的Task。

    nimbus一般情况下不会引发单点故障,如果nimbus守护进程在Topology运行时停止了,只要分配的supervisor和worker健康运行,Topology一直继续数据处理



supervisor的工具机制:

    supervisor守护进程等待nimbus分配任务后生成并监控worker执行任务,supervisor和worker都是运行在不同的JVM进程上,如果由supervisor拉起的一个worker进程因为错误异常退出,supervisor守护进程会尝试重新生成新的worker进程。

   
   
   


   


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值