В чем разница между Apache Spark и Apache Flink?

В чем разница между Apache Spark и Apache Flink?

Будет ли Apache Flink заменить Hadoop?

Ответ 1

Сначала, что у них общего? Flink и Spark являются платформами обработки данных общего назначения и проектами верхнего уровня Apache Software Foundation (ASF). Они имеют широкую область применения и могут использоваться для десятков больших сценариев данных. Благодаря расширениям, таким как SQL-запросы (Spark: Spark SQL, Flink: MRQL), обработка графика (Spark: GraphX, Flink: Spargel (базовый) и Gelly (библиотека)), машинное обучение (Spark: MLlib, Flink: Flink ML) и потоковая обработка (Spark Streaming, Flink Streaming). Оба могут работать в автономном режиме, но многие используют их поверх Hadoop (YARN, HDFS). Они обладают высокой производительностью из-за их памяти.

Однако, способ достижения этого разнообразия и случаи, в которых они специализируются, отличаются.

Отличия: Сначала я хотел бы предоставить две ссылки, которые подробно описывают различия между Flink и Spark, прежде чем суммировать их. Если у вас есть время взглянуть на Apache Flink - это 4G платформы Google Analytics BigData и сходства и различия Flink и Spark

В отличие от Flink, Spark не способен обрабатывать наборы данных, превышающие оперативную память, до версии 1.5.x

Flink оптимизирован для циклических или итерационных процессов, используя итеративные преобразования в коллекциях. Это достигается за счет оптимизации алгоритмов объединения, цепочки операторов и повторного использования разбиения и сортировки. Тем не менее, Flink также является мощным инструментом пакетной обработки. Потоки потоков потокового потока обрабатывают потоки данных как истинные потоки, то есть элементы данных сразу же "конвейерные", хотя потоковая программа, как только они поступают. Это позволяет выполнять гибкие оконные операции над потоками. Он даже способен обрабатывать поздние данные в потоках с помощью водяных знаков. Кроме того, Flink обеспечивает очень сильный режим совместимости, который позволяет использовать существующий шторм, уменьшить карту,... код на двигателе выполнения флинка

Искры, с другой стороны, основаны на упругих распределенных наборах данных (RDD). Эта (в основном) внутрисистемная структура данных дает возможность искры функциональной парадигмы программирования. Он способен вычислять большие партии, фиксируя память. Spark streaming обертывает потоки данных в мини-пакеты, т.е. Собирает все данные, которые поступают в течение определенного периода времени, и запускает обычную пакетную программу для собранных данных. Пока пакетная программа запущена, собираются данные для следующей мини-партии.

Будет ли Flink заменять Hadoop?

Нет, не будет. Hadoop состоит из разных частей:

  • HDFS - Hadoop Распределенная файловая система
  • YARN - еще один Negotiator ресурсов (или диспетчер ресурсов)
  • MapReduce - пакетная обработка Hadoop

HDFS и YARN по-прежнему необходимы как неотъемлемая часть кластеров BigData. Эти два являются основой для других распределенных технологий, таких как распределенные механизмы запросов или распределенные базы данных. Основным прецедентом для MapReduce является пакетная обработка для наборов данных, превышающих оперативную память кластера, в то время как Flink предназначен для потоков и итеративной обработки. Таким образом, в целом эти два могут сосуществовать, хотя я бы настоятельно рекомендовал пойти с flinks более сильными и более легкими в использовании пакетными возможностями.

Ответ 2

Согласно Apache Flink и Spark страницы документации:

Apache Flink - платформа с открытым исходным кодом для распределенного потока и обработки пакетных данных

Apache Spark ™ - это быстрый и общий механизм для крупномасштабной обработки данных.

Обработка потока в реальном времени - USP Apache Flink.

Flink предоставляет выразительные API-интерфейсы, которые позволяют программистам быстро разрабатывать приложения для потоковых данных.

Flink построен как хороший гражданин YARN (которого Spark еще не совсем доделал), и он может запускать существующие задания MapReduce непосредственно в своем механизме выполнения.

Посмотрите на эту article форму infoworld bog, опубликованную Ян Пойнтером для более подробной информации.

Ключ отличия от блога, отправленного VON HANS-PETER ZORN UND JASIR EL-SOBHY

  • Обработка потока. Хотя Spark - пакетно-ориентированная система, работающая на кусках данных, называемых RDD, Apache Flink - это система обработки потоков, способная обрабатывать строку за строкой в ​​реальном времени.
  • Итерации: Используя свою поточную архитектуру, Flink позволяет вам изначально перебирать данные, что-то Spark также поддерживает только в виде пакетов
  • Управление памятью. Задачи Spark должны быть оптимизированы и адаптированы к конкретным наборам данных, потому что вам нужно вручную управлять секционированием и кешированием, если вы хотите получить его правильно.
  • Зрелость: Flink все еще находится в зачаточном состоянии и имеет лишь несколько производственных развертываний.
  • Поток данных. В отличие от парадигмы процедурного программирования Флинк следует методу распределенного потока данных. Для операций набора данных, в которых требуются промежуточные результаты в дополнение к регулярному вводу операции, широковещательные переменные используются для распределения предварительно рассчитанных результатов для всех рабочих узлов.

Что касается вашего второго вопроса, ни Flink, ни Spark не могут заменить Hadoop.

Flink - замена Hadoop MapReduce; который работает как в пакетном, так и в потоковом режимах, устраняя карту и сокращая рабочие места в пользу ориентированного графического подхода, который использует память в памяти для увеличения производительности.

HDFS (распределенная файловая система Hadoop) и YARN (еще один переговорщик ресурсов), которые являются частью большой экосистемы Hadoop , не могут быть заменены на Flink

Посмотрите на эту презентацию flink-vs-spark от Slim Baltagi, директора отдела разработки больших данных Capital One.

Ответ 3

Программы Flinks оптимизируются оптимизатором с затратами (например, SQL-движками). Поэтому приложениям Flink потребуется повторная настройка и обслуживание при изменении характеристик кластера и изменении данных со временем.

Ответ 4

С точки зрения разработчика:

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

Но, на мой взгляд, Flink - лучший выбор, потому что мне не нужно сталкиваться с такими проблемами "из памяти" во время разработки. У Flink есть собственный диспетчер памяти, поэтому в целом вам не нужно заботиться об этом.

Ответ 5

Пометить одну из уникальных функций - обработать потоки данных вне порядка, используя водяные знаки

Ответ 6

Spark обеспечивает почти поточную передачу в реальном времени из-за архитектуры микро-пакетной обработки, тогда как Apache Flink обеспечивает истинную реальную поточную передачу в реальном времени благодаря чистой потоковой архитектуре на основе архитектуры Kappa. Это подтверждается потоковым приложением Benchmark для Yahoo, а затем снова расширенным приложением yahoo streaming. Просмотрите видео, которое объясняет эту деталь и помогло мне понять это. https://www.youtube.com/watch?v=WTBsMTpR-mE