Apache Flink vs Spark: что и когда выбрать для потоковой обработки Big Data

Flink vs Spark, Big Data, Большие данные, архитектура, обработка данных, Apache Spark

Flink часто сравнивают с Apache Spark, другим популярным инструментом потоковой обработки данных. Оба этих распределенных отказоустойчивых фреймворка с открытым исходным кодом используются в высоконагруженных Big Data приложениях для анализа данных, хранящихся в кластерах Hadoop [1] и других кластерных системах. В этой статье мы поговорим, чем похожи и чем отличаются Флинк и Спарк, а также рассмотрим, в каких случаях оптимально выбрать тот или иной продукт.

5 сходств Apache Flink и Spark

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

  1. оба продукта вышли из академической среды – Спарк из университета Беркли (UC Berkley), а Флинк – из берлинского ВУЗа TU University [2];
  2. оба решения поддерживают Лямбда-архитектуру (Lambda Architecture) – универсальный подход, направленный на применение произвольной функции к произвольному набору данных с минимальным период ожидания возвращения искомого значения [3];
  3. наличие встроенных средств для выполнения графовых операций, машинного обучения или SQL-аналитики – в Спарк за это отвечают компоненты GraphX, MLlib, Spark SQL, а во Флинк – библиотеки Gelly, FlinkML и Table-API соответственно;
  4. гарантия строго однократной доставки сообщений (exactly once);
  5. надежность, масштабируемость и отказоустойчивость характерны для обоих продуктов.

3 главных отличия Флинк и Спарк

При этом сходстве Флинк существенно отличается от Спарк по следующим характеристикам:

  1. время задержки (latency) Flink обеспечивает обработку данных в режиме реального времени с задержкой порядка 1 миллисекунды, тогда как для Spark latency может составлять несколько секунд;
  2. режим работы с данными – несмотря на то, что Spark является средством потоковой обработки Big Data, он реализует микропакетный подход (micro-batch), а Flink обеспечивает полноценную работу как в поточном, так и в пакетном режимах с помощью разных API – для потоков DataStream API и DataSet API для пакетов;
  3. зрелость, поддержка сообщества и реализация в коммерческих продуктах – в настоящее время Apache Spark более распространен среди Big Data решений и сообщества специалистов. Для Flink пока характерны некоторые проблемы на уровне реализации, например, высокое потребление CPU, чувствительность к сетевым проблемам [4], но доля этих недостатков снижается с каждым новым релизом.
Apache Flink, Apache Spark, сравнение Апач Флинк и Спарк
Сравнение Apache Flink и Apache Spark

Где используется Apache Flink и способен ли он заменить Spark

По мере развития спроса на потоковую обработку больших данных, популярность Флинк уверенно растет. В частности, Flink используется международной компанией по доставке еды и пассажирским перевозкам Uber и одной из крупнейших платформ интернет-торговли Alibaba [2]. Также стоит отметить, что именно Flink выбран в качестве средства потоковой обработки Big Data в Arenadata, отечественном дистрибутиве Apache Hadoop. В свою очередь, конкурент Флинк, Apache Spark, используется в дистрибутиве хадуп от компании Cloudera (CDH, Cloudera’s Distribution including Apache Hadoop) и применяется в Big Data решениях таких интернет-гигантов, как Amazon, Yahoo!, NASA JPL, eBay Inc., Baidu и др. [5].

Apache Flink, Apache Spark, Апач Флинк и Спарк, большие данные, Big Data, примеры использования
Примеры практического применения Apache Flink и Spark

Таким образом, еще пока рано говорить о Флинк как о полноценной альтернативе Apache Spark. Однако, если необходимо обеспечить обработку потоков и пакетов Big Data «на лету», собирая данные из Kafka, Amazon Kinesis, HDFS, Cassandra, Google Cloud Platform, HBase и других файловых хранилищ, то Apache Flink может стать хорошим инструментом для графовых вычислений, SQL-аналитики и машинного обучения (Machine Learning).

Больше подробностей про Спарк вы узнаете на курсе SPARK2: Анализ данных с Apache Spark в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов, руководителей, архитекторов, инженеров, администраторов, аналитиков Big Data и Data Scientist’ов в Москве.

расписание компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Смотреть расписание занятий
регистрация на компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Зарегистрироваться на курс

Источники

  1. https://ru.bmstu.wiki/Apache_Flink
  2. https://medium.com/@chandanbaranwal/spark-streaming-vs-flink-vs-storm-vs-kafka-streams-vs-samza-choose-your-stream-processing-91ea3f04675b
  3. http://datareview.info/article/lyambda-arhitektura-novyiy-podhod-k-analizu-dannyih/
  4. https://habr.com/ru/company/ivi/blog/347408/
  5. http://datareview.info/article/obrabotka-potokovyx-dannyx-storm-spark-i-samza/