Tuple接口

Tuple是Storm中主要数据结构,在Storm发送接收消息过程中,每一条消息都是一个Tuple对象。

Storm提供了Tuple的默认实现类TupleImpl。它除了实现Tuple接口外,还实现了Clojure定义的几个接口Seqable、Indexed和IMeta,实现这些接口的目的是为了在Clojure代码中能更好操纵Tuple对象。

ack-fail机制:
* 1.需要ackfail时候,请为每个tuple生成一个messageID,这个messageID是用来标识你关系的tuple。当这个tuple被完全处理时候,storm框架会调用spoutd ack方法,否则调用fail,至于你的消息是否重发,完全自己处理。
* 2.在Spout有并发度情况下,storm会根据tuple最开始属于的spout taskid,通知相应的spoutTask
* 3.在流式计算中topology的bolt组件是可以陪着多个的。在每个环节中,都需要显式告诉storm框架。

<spoutTaskId,<RootID,ackValue=0>>
spout1--->tuple1(msgId,rootId)

MySpout{
    private Map buffer=new HashMap();
    spout.open()
    spout.nextTuple(){
        collector.emit();
        buffer.put(msgId,messValue);
    }
    spout.outputFields()
    //发送成功后移除
    spout.ack(msgId){
        buffer.remove(msgId);
    }
    spout.fail(msgId){
        //消息重发
        String messvalue=buffer.get(msgId);
        collector.emit();
    }
}
  • ack机制里面,发送2种类型的tuple。一种是原始消息(DataTuple),另外一种是ackTuple<RootID,tupleID>,DataTuple中会包含一个MessageId的对象。

    spout.emit(DataTuple(MessageId(ackTuple)))—>bolt()

任务分配

task总数
可用worker数量

通信机制

去zk获取每个组件任务
启动不同服务
    nimbus
    supervisor
    worker supervisor启动----java -server XXX.java main-class(main(Worker.mkwork(new Worker())))
    Task worker启动Task

心跳机制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值