Spark Streaming接收器仅处理一条记录

问题描述

我在Spark Streaming 2.2.1作业中有16个接收器。一段时间后,一些接收器正在处理越来越少的记录,最终仅每秒处理一个记录。该行为可以在屏幕截图上看到:

enter image description here

虽然我知道根本原因很难发现而且不明显,但是有什么方法可以进一步调试此问题?目前,我不知道从哪里开始挖掘。可能与背压有关吗?

火花流媒体属性

<h4><img style="border: 1px solid black; align: right;" title="" src="sys_attachment.do?sys_id=00ee33cbdb1b9c507261e03cd396190b" alt="" width="204" align="right" border="1" hspace="" vspace="" /></h4>
<h4><strong>4. Entrez votre mot de passe.</strong></h4>
<ul style="list-style-type: disc; list-style-position: inside;">
    <li>Puis,cliquez sur "Suivant".</li>
</ul>

解决方法

似乎问题在运行30分钟后开始显现。我认为背压可能是一个原因。根据此article

激活背压后,驱动程序将监视当前的批处理调度延迟和处理时间,并动态调整接收器的最大速率。可以在接收器日志中验证新速率限制的通信:

2016-12-06 08:27:02,572信息org.apache.spark.streaming.receiver.ReceiverSupervisorImpl收到了新的速率限制:51。

这是我建议您尝试的方法:

  1. 检查接收器日志以查看是否触发了backpress。
  2. 检查您的流接收器,看是否有任何错误。
  3. 检查YARN资源管理器的资源利用率。
  4. 调整Spark参数以查看是否有区别。