Storm内部队列溢出处理与Trident介绍
1. Storm内部队列溢出判断
1.1 内部队列类型
Storm中有三种主要的内部队列,它们在数据处理流程中发挥着不同的作用:
- 执行器的传入队列(EXECUTOR’S INCOMING QUEUE) :该队列接收来自拓扑中前一个spout或bolt的元组。若前一个spout或bolt生成元组的速度超过消费bolt的处理速度,就会出现溢出问题。
- 执行器的传出传输队列(EXECUTOR’S OUTGOING TRANSFER QUEUE) :此队列位于执行用户逻辑的执行器主线程和将元组路由到下一个任务的传输线程之间。要使该队列出现积压,处理传入元组的速度需超过路由、序列化等操作的速度,这种情况较为罕见。
- 工作进程的传出传输队列(WORKER PROCESS’S OUTGOING TRANSFER QUEUE) :该队列接收工作进程上所有执行器发往其他工作进程的元组。当工作进程内有足够多的执行器生成需通过网络发送到其他工作进程的元组时,该缓冲区可能会溢出。
1.2 队列溢出的影响
当某个缓冲区开始溢出时,Storm会将溢出的元组暂时放入一个临时溢出缓冲区,直至对应队列有空间。这会导致吞吐量下降,甚至使拓扑停止运行。
1.3 使用调试日志诊断溢出
查看Storm内部缓冲区是否溢出的最佳位置是Storm日志中的调试日志输出。以下是一个示例调试日志条目:
超级会员免费看
订阅专栏 解锁全文
1289

被折叠的 条评论
为什么被折叠?



