web-dev-qa-db-fra.com

Kafka Connect manque d'espace sur le tas

Après avoir démarré Kafka Connect (connect-standalone), ma tâche échoue immédiatement après le démarrage de:

Java.lang.OutOfMemoryError: Java heap space
    at Java.nio.HeapByteBuffer.<init>(HeapByteBuffer.Java:57)
    at Java.nio.ByteBuffer.allocate(ByteBuffer.Java:335)
    at org.Apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.Java:93)
    at org.Apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.Java:71)
    at org.Apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.Java:154)
    at org.Apache.kafka.common.network.KafkaChannel.read(KafkaChannel.Java:135)
    at org.Apache.kafka.common.network.Selector.pollSelectionKeys(Selector.Java:343)
    at org.Apache.kafka.common.network.Selector.poll(Selector.Java:291)
    at org.Apache.kafka.clients.NetworkClient.poll(NetworkClient.Java:260)
    at org.Apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.Java:232)
    at org.Apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.Java:180)
    at org.Apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.Java:193)
    at org.Apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.Java:248)
    at org.Apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.Java:1013)
    at org.Apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.Java:979)
    at org.Apache.kafka.connect.runtime.WorkerSinkTask.pollConsumer(WorkerSinkTask.Java:316)
    at org.Apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.Java:222)
    at org.Apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.Java:170)
    at org.Apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.Java:142)
    at org.Apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.Java:140)
    at org.Apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.Java:175)
    at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    at Java.lang.Thread.run(Thread.Java:745)

Certaines documentations Kafka mentionnent l’espace de tas, vous invitant à l’essayer avec "la valeur par défaut" et ne le modifiant que s’il ya des problèmes, mais il n’existe aucune instruction pour modifier l’espace de tas.

4
Robin Daugherty

Vous pouvez contrôler la taille maximale et la taille initiale du segment en définissant la variable d'environnement KAFKA_HEAP_OPTS.

L'exemple suivant définit une taille de départ de 512 Mo et une taille maximale de 1 Go:

KAFKA_HEAP_OPTS="-Xms512m -Xmx1g" connect-standalone connect-worker.properties connect-s3-sink.properties

Lors de l'exécution d'une commande Kafka telle que connect-standalone, le script kafka-run-class est appelé, définit une taille de segment de mémoire par défaut de 256 Mo dans la variable d'environnement KAFKA_HEAP_OPTS, si elle n'est pas déjà définie.

12
Robin Daugherty

Même si je faisais face au problème, je ne pouvais pas démarrer mon producteur et consommateur pour un sujet donné. Supprimez également tous les fichiers journaux inutiles et toutes les rubriques. Même si cela n’est pas lié au problème.

Changer le kafka-run-class.sh n'a pas fonctionné pour moi. J'ai changé les fichiers ci-dessous

kafka-console-consumer.sh

kafka-console-producer.sh

et a cessé d’obtenir une erreur de MOO. Consommateur et producteur ont bien travaillé par la suite.

Augmentation de la taille à KAFKA_HEAP_OPTS="-Xmx1G" était 512m plus tôt.

1
Sagarmatha