Guys,

To change the subject from meta-voting...

We are doing Spark Streaming against a Kafka setup, everything is pretty
standard, and pretty current. In particular we are using Spark 2.1, and
Kafka 0.10.1, with batch windows that are quite large (5-10 minutes). The
problem we are having is pretty well described in the following excerpt
from the Spark documentation:
"For possible kafkaParams, see Kafka consumer config docs. If your Spark
batch duration is larger than the default Kafka heartbeat session timeout
(30 seconds), increase heartbeat.interval.ms and session.timeout.ms
appropriately. For batches larger than 5 minutes, this will require
changing group.max.session.timeout.ms on the broker. Note that the example
sets enable.auto.commit to false, for discussion see Storing Offsets below."

In our case "group.max.session.timeout.ms" is set to default value, and our
processing time per batch easily exceeds that value. I did some further
hunting around and found the following SO post
<http://stackoverflow.com/questions/39730126/difference-between-session-timeout-ms-and-max-poll-interval-ms-for-kafka-0-10-0>
:
"KIP-62, decouples heartbeats from calls to poll() via a background
heartbeat thread. This, allow for a longer processing time (ie, time
between two consecutive poll()) than heartbeat interval."

This pretty accurately describes our scenario: effectively our per batch
processing time is 2-6 minutes, well within the batch window, but in excess
of the max session timeout between polls, causing the consumer to be kicked
out of the group.

Are there any plans to move the Kafka client up to 0.10.1 and make this
feature available to consumers? Or have I missed some helpful configuration
that would ameliorate this problem? I recognize changing "
group.max.session.timeout.ms" is one solution, though it seems doing
heartbeat checking outside of implicitly piggy backing on polling seems
more elegant.

-Oscar

Reply via email to