Spark структурированное управление потоковым состоянием - PullRequest
0 голосов
/ 06 декабря 2018

Я узнал, что по умолчанию структурированная потоковая передача поддерживает HDFSBackedStateStoreProvider.Это означает, что вся информация о состоянии хранится в местоположении HDFS.

Гарантирует ли это, что в памяти не хранятся данные, которые могут вызвать длительные паузы ГХ?

Причина этого вопросато, что выполняемое мной задание останавливает обработку данных при большом объеме трафика и перехватывает данные через 15-20 минут задержки.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Гарантирует ли это, что никакие данные не сохраняются в памяти, что может вызвать длительные паузы GC?

Spark поддерживает некоторые версии состояния в памяти исполнителей, чтобы избежать повторного чтения предыдущего состоянияза каждую партию.

Кстати, какую версию Spark вы используете?В Spark 2.4.0 есть некоторые улучшения в использовании памяти в поставщике хранилища состояний HDFS, которые значительно уменьшат использование памяти в приложениях со структурированной потоковой передачей.Так что, если вы не используете Spark 2.4.0, стоит проверить это.

0 голосов
/ 06 декабря 2018

Вы были правы, что структурированная потоковая передача Spark поддерживает HDFSBackedStateStoreProvider.

Однако это не гарантирует, что данные не будут сохранены в памяти.Он использует HDFS для хранения контрольных точек через равные промежутки времени в виде записи в журнал.Это сделано таким образом, что если ваш поток выходит из строя, последнее известное состояние может быть восстановлено из HDFS, и следующий поток сможет повторно обработать данные с того места, где предыдущий поток остановился.

Что касается длинных GC-пауз, вы можете посмотреть следующую статью:

  1. https://databricks.com/blog/2015/05/28/tuning-java-garbage-collection-for-spark-applications.html
...