共计 1770 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章主要讲解了“取消 storm 跟踪机制的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“取消 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 跟踪机制的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!