这篇文章主要讲解了“取消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跟踪机制的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云搜网,小编将为大家推送更多相关知识点的文章,欢迎关注!