随着消息从IBM MQ消耗,调度延迟会增加。
嗨,
我有一个在EMR上运行的Spark Streaming应用程序。该应用程序具有一个定制的接收器,可以从IBM MQ中获取消息,并且它存储数据以转换为RDD并对其进行处理。下面是规格。
计算非常少,处理批处理的所有消息大约需要0.5秒。
消息量不是很高。每2s批处理最多可发送10条消息,每5s批处理最多可发送25条消息。
1个主节点 2个核心节点
每个具有32G内存,每个执行器2个内核。
应用运行良好,突然注意到调度延迟不断增加,从而减慢了消息流的处理速度。在进一步分析中,请注意,几乎为所有任务分配的任务具有RACK_LOCAL局部性,这会延迟获取数据以执行任务。我不确定这是什么原因以及如何解决该问题。任何人都可以朝正确的方向前进吗?
您会注意到,所有具有PROCESS_LOCAL位置的任务均立即完成,而具有RACK_LOCAL的任务的调度和最终处理则被延迟。任何线索都会有很大帮助。
谢谢。