[ Russian ] [ English ]

Организация распределенной потоковой обработки данных: разделение на подпотоки и восстановление после сбоев

Артем Трофимов
Яндекс

Потоковую обработку данных отличает от пакетной потенциальная бесконечность входных данных. В докладе рассматриваются две задачи обеспечения эффективной и надежной обработки бесконечного потока данных.

Первая задача состоит в разделении бесконечного потока на конечные подпотоки: обычно, агрегация по бесконечному потоку невозможна, поэтому система потоковой обработки должна определять, когда закончился поток с определенными свойствами, чтобы выдать результат агрегации по подпотоку. Обычно, подпотоки делят поток по времени (временные окна), но некоторые сценарии требуют разделения по другим признакам, например, по пользовательским сессиям. Система одновременно может обрабатывать произвольное число подпотоков, например, если обрабатываются пользовательские сессии, то каждая сессия формирует свой подпоток.

Вторая задача состоит в восстановлении после сбоев. В распределенной системе могут отказывать отдельные вычислительные узлы. Система должна восстанавливаться после сбоев за разумное время (без полного повторения вычислений) и так, чтобы для пользователя полученные результаты были ожидаемыми. Ожидания на выходные данные обычно задаются в терминах гарантий доставки - “exactly-once” и “at-least-once”.

В докладе рассматриваются подходы к решению этих двух задач в современных распределенных потоковых системах. Будут также рассмотрены альтернативные способы решения этих задач и продемонстрированы сценарии, при которых они более эффективны в сравнении с существующими.

Слайды доклада

Видео доклада.

Список литературы:

  1. Tucker P. A. et al. Exploiting punctuation semantics in continuous data streams //IEEE Transactions on Knowledge and Data Engineering. – 2003. – Т. 15. – №. 3. – С. 555-568.
  2. Akidau T. et al. Watermarks in stream processing systems: semantics and comparative analysis of Apache Flink and Google cloud dataflow //Proceedings of the VLDB Endowment. – 2021. – Т. 14. – №. 12. – С. 3135-3147.
  3. Carbone P. et al. State management in Apache Flink®: consistent stateful distributed stream processing //Proceedings of the VLDB Endowment. – 2017. – Т. 10. – №. 12. – С. 1718-1729.
  4. Akidau T. et al. Millwheel: Fault-tolerant stream processing at internet scale //Proceedings of the VLDB Endowment. – 2013. – Т. 6. – №. 11. – С. 1033-1044.
  5. Zaharia M. et al. Discretized Streams: An Efficient and {Fault-Tolerant} Model for Stream Processing on Large Clusters //4th USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 12). – 2012.
  6. Wang S. et al. Lineage stash: fault tolerance off the critical path //Proceedings of the 27th ACM Symposium on Operating Systems Principles. – 2019. – С. 338-352.
  7. Silvestre P. F. et al. Clonos: Consistent causal recovery for highly-available streaming dataflows //Proceedings of the 2021 International Conference on Management of Data. – 2021. – С. 1637-1650.
  8. Kuralenok I. E. et al. Deterministic Model for Distributed Speculative Stream Processing //European Conference on Advances in Databases and Information Systems. – Springer, Cham, 2018. – С. 233-246.
  9. Trofimov A. Consistency Maintenance in Distributed Analytical Stream Processing //European Conference on Advances in Databases and Information Systems. – Springer, Cham, 2018. – С. 413-422.
  10. Trofimov A. et al. Distributed Classification of Text Streams: Limitations, Challenges, and Solutions //Proceedings of Real-Time Business Intelligence and Analytics. – 2019. – С. 1-6.
Supported by Synthesis Group