Apache kafka Kafka流启动问题-org.apache.Kafka.streams.errors.LockException

Apache kafka Kafka流启动问题-org.apache.Kafka.streams.errors.LockException,apache-kafka,kafka-consumer-api,apache-kafka-streams,Apache Kafka,Kafka Consumer Api,Apache Kafka Streams,我有一个Kafka Streams应用程序版本-0.11,它从几个主题中获取数据,并将数据合并到另一个主题中 卡夫卡配置: 5 kafka brokers - version 0.11 Kafka Topics - 15 partitions and 3 replication factor. 每小时消耗/产生数百万条记录。每当我让卡夫卡经纪人下台时,它都会抛出以下异常: org.apache.kafka.streams.errors.LockException: task [4_10] Fa

我有一个Kafka Streams应用程序版本-0.11,它从几个主题中获取数据,并将数据合并到另一个主题中

卡夫卡配置:

5 kafka brokers - version 0.11
Kafka Topics - 15 partitions and 3 replication factor.
每小时消耗/产生数百万条记录。每当我让卡夫卡经纪人下台时,它都会抛出以下异常:

org.apache.kafka.streams.errors.LockException: task [4_10] Failed to lock the state directory for task 4_10
    at org.apache.kafka.streams.processor.internals.ProcessorStateManager.<init>(ProcessorStateManager.java:99)
    at org.apache.kafka.streams.processor.internals.AbstractTask.<init>(AbstractTask.java:80)
    at org.apache.kafka.streams.processor.internals.StandbyTask.<init>(StandbyTask.java:62)
    at org.apache.kafka.streams.processor.internals.StreamThread.createStandbyTask(StreamThread.java:1325)
    at org.apache.kafka.streams.processor.internals.StreamThread.access$2400(StreamThread.java:73)
    at org.apache.kafka.streams.processor.internals.StreamThread$StandbyTaskCreator.createTask(StreamThread.java:313)
    at org.apache.kafka.streams.processor.internals.StreamThread$AbstractTaskCreator.retryWithBackoff(StreamThread.java:254)
    at org.apache.kafka.streams.processor.internals.StreamThread.addStandbyTasks(StreamThread.java:1366)
    at org.apache.kafka.streams.processor.internals.StreamThread.access$1200(StreamThread.java:73)
    at org.apache.kafka.streams.processor.internals.StreamThread$RebalanceListener.onPartitionsAssigned(StreamThread.java:185)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.onJoinComplete(ConsumerCoordinator.java:265)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:363)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureActiveGroup(AbstractCoordinator.java:310)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:297)
    at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1078)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1043)
    at org.apache.kafka.streams.processor.internals.StreamThread.pollRequests(StreamThread.java:582)
    at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:553)
    at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:527)
org.apache.kafka.streams.errors.LockException:任务[4_10]未能锁定任务4_10的状态目录
位于org.apache.kafka.streams.processor.internals.ProcessorStateManager.(ProcessorStateManager.java:99)
位于org.apache.kafka.streams.processor.internals.AbstractTask。(AbstractTask.java:80)
位于org.apache.kafka.streams.processor.internals.StandbyTask.(StandbyTask.java:62)
位于org.apache.kafka.streams.processor.internals.StreamThread.createStandbyTask(StreamThread.java:1325)
位于org.apache.kafka.streams.processor.internals.StreamThread.access$2400(StreamThread.java:73)
位于org.apache.kafka.streams.processor.internals.StreamThread$StandbyTaskCreator.createTask(StreamThread.java:313)
位于org.apache.kafka.streams.processor.internals.StreamThread$AbstractTaskCreator.retryWithBackoff(StreamThread.java:254)
位于org.apache.kafka.streams.processor.internals.StreamThread.addStandbyTasks(StreamThread.java:1366)
位于org.apache.kafka.streams.processor.internals.StreamThread.access$1200(StreamThread.java:73)
位于org.apache.kafka.streams.processor.internals.StreamThread$RebalanceListener.onPartitionsAssigned(StreamThread.java:185)
位于org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.onJoinComplete(ConsumerCoordinator.java:265)
位于org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:363)
位于org.apache.kafka.clients.consumer.internals.AbstractCoordinator.EnsuleReactiveGroup(AbstractCoordinator.java:310)
位于org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:297)
位于org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1078)
访问org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1043)
位于org.apache.kafka.streams.processor.internals.StreamThread.pollRequests(StreamThread.java:582)
位于org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:553)
位于org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:527)
我在几期jira杂志上读到,清理流可能有助于解决这个问题。但是每次启动Kafka流应用程序时清理流是正确的解决方案还是补丁?此外,流清理将延迟应用程序启动,对吗


注意:在调用streams.start()之前是否需要调用streams.cleanUp(),每次启动Kafka streams应用程序时

看到
org.apache.Kafka.streams.errors.LockException:任务[4_10]未能锁定任务4_10的状态目录
实际上是预期的,应该自行解决。该线程将退出以等待另一个线程释放锁并稍后重试。因此,您甚至可能会看到此警告消息是多次日志,以防重试发生在第二个线程释放锁之前


但是,最终锁应该由第二个线程释放,第一个线程将能够获得锁。之后,溪流应该向前移动。请注意,这是一条警告消息,不是错误。

但解决此警告需要的时间太长。是否有一个配置可以减少重试次数。理想情况下,我应该在每次启动流实例时调用cleanup()?不,不应该!这将引入大量不必要的开销!比较文档中的“提示”框:我连续收到上述异常,并且在过去12小时内处于上述状态。2017-09-14 06:32:04-[WARN][view-live-cb2c9b8b-4979-45bc-bf5d-51212242b67e-StreamThread-1][org.apache.kafka.streams.processor.internals.StreamThread.retryWithBackoff:283]:stream thread[view-live-cb2c9b8b-4979-45bc-bf5d-51212242b67e-StreamThread-1]仍在尝试创建任务:[2\u 3]有解决方案吗。看起来第二个线程没有释放锁,因此第一个线程无法获得该状态的锁。请帮忙。