В чем разница между Apache Spark и Apache Flink? [закрытый]

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

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

6 ответов


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

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

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

в отличие от Flink, Spark не способен обрабатывать наборы данных больше, чем ОЗУ до версии 1.5.x

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

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

заменит ли Флинк Hadoop?

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

  • HDFS-Hadoop Распределенная Файловая Система
  • пряжа-еще одна Переговорщик Ресурсов (или менеджер ресурсов)
  • MapReduce-The пакетная обработка базы of В Hadoop

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


согласно Apache Флинк & Искра страницы документации:

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

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

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

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

Флинк построен, чтобы быть хорошим пряжа гражданин (которого Искра еще не совсем достигла), и он может запускать существующие MapReduce задания непосредственно на его исполнительном механизме.

посмотри статьи форма infoworld болото опубликовано Ян Пойнтер для получения более подробной информации.

ключ различия из блога, опубликованного VON HANS-PETER ZORN UND JASIR ЭЛЬ-СОБХИ

  1. Обработка Потоков: пока Искра это пакетно-ориентированная система, которая работает на кусках данных, называемых RDDs, Apache Флинк система обработки потока способная для обработки строки после строки в реальное временя.
  2. итераций: используя свою потоковую архитектуру,Флинк позволяет вам изначально перебирать данные, что-то Искра поддерживает только как партии
  3. Управление Памятью: Искра задания должны быть оптимизированы и адаптированы к конкретным наборам данных, потому что вам нужно вручную управлять секционированием и кэшированием, если вы хотите получить его правильно
  4. зрелость:Флинк все еще находится в зачаточном состоянии и имеет только несколько производственных развертываний
  5. Поток Данных: в отличие от парадигмы процедурного программирования Флинк следует подходу распределенного потока данных. Для операций набора данных, где требуются промежуточные результаты в дополнение к регулярному вводу операции, широковещательные переменные используются для распределения предварительно вычисленных результатов по всем рабочим узлам

Что касается вашего второго вопроса, ни Флинк, ни Искра может заменить Hadoop с.

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

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

посмотри flink-vs-spark презентация Slim Baltagi, Директор компании Big data engineering, Capital One.


программы Flink оптимизированы оптимизатором на основе затрат (e.g: SQL Engine). Таким образом, приложения Flink будут нуждаться в повторной конфигурации и обслуживании всякий раз, когда характеристики кластера изменяются и данные развиваются с течением времени.


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

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

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


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


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