取消storm跟踪机制的方法有哪些

这篇文章主要讲解了“取消storm跟踪机制的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“取消storm跟踪机制的方法有哪些”吧!

storm中涉及的名词

0、zookeeper

1、nimbus

2、supervisor

3、worker

4、executor

5、task

6、topology

0、zookeeper:存储状态信息、调度信息、心跳,—》nimbus和supervisor之间的通信是由zookeeper来连接的,nimbus和supervisor是不能直接通信的,storm集群中的信息都存储在zookeeper中。

1、nimbus:相当于集群中的master,storm是master/slave架构—》nimbus主要有两个任务,1—》管理集群,supervisor向zookeeper写信息,然后nimbus从zookeeper的节点上获取到信息,这样nimbus就知道集群中的信息了。

2—》调度topology,当一个topology通过nimbus提交到集群,nimbus会通过zookeeper中得到集群中有多少个supervisor和运行状况,然后根据supervisor运行状况启动worker,nimbus也负责接收数据。

2、supervisor:storm的每一个节点上会有一个supervisor进程,supervisor负责启动和停止worker进程。

3、worker:每一个supervisor进程一般会启动多个worker进程,worker就是jvm,主要负责两件事;1、启动executor,2、负责worker和worker之间的通信。

4、executor:创建实际的Spout/Bolt对象,创建两个线程,执行线程、传输线程(负责task与task中数据的通信)。

5、task:本人认为task就是executor中的执行线程。

6、topology:就是我们写的storm程序

7、Spout(水龙头):每一个topology都要有Spout节点,都必须从Spout节点开始,是生产Tuple的源头,Spout有  KafkaSpout、DRPCSpout、RedisSpout等;Spout是集群的起始节点,因此nimbus和supervisor都挂了,集群还是可以运作的,Spout拿数据然后产生Tuple,再将数据发送给Bolt来处理数据,nextTuple()就是Spout的发送数据的函数,emit()是发送数据的方法;

8、Bolt:每一个topology可以有n个Bolt处理节点,用去处理数据的中间状态或结果状态,Bolt中的execute()方法是用来处理数据的

    BaseBolt:

    RichBolt:collector.emit(oldTuple,newTuple);

9、Tuple:Tuple的id对于Storm的可靠性是非常有用的,数据的最小单元

10、acker:Storm的跟踪机制,Tuple在每一级的处理都会向acker汇报;如果规定时间内没有返回到需要的信息,会有一定的处理机制,比如重发或丢弃;

    取消跟踪机制的三种方法

        1、在配置文件中将Config.TOPOLOGY_ACKERS设置为0,整个bolt树状结构都没有ack机制

        2、不设置messageid,没有messageid,ack就没法做异或运算;

        3、在发送Tuple时不发送oldTuple

跟踪总结:ack机制实现首先需要配置,其次有messageid,最后要将原Tuple和新Tuple都发送出去;

10、Stream:每一个Stream都有一个id,如果没有指定写id就用的是默认的流,叫default,每个Spout/Bolt都有一个默认的Stream:default

注:并发度的衡量标准是由多少个executor(thread),而不是task

感谢各位的阅读,以上就是“取消storm跟踪机制的方法有哪些”的内容了,经过本文的学习后,相信大家对取消storm跟踪机制的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云搜网,小编将为大家推送更多相关知识点的文章,欢迎关注!