2015-04-28 8 views
7

Как Apache Flink сравнивается с Mapreduce на Hadoop? Каким образом это лучше и почему?Как Apache Flink сравнивается с Mapreduce на Hadoop?

+0

Hashtags на самом деле не используются в вопросах SO, я бы предложил просто задать ваш вопрос и добавить соответствующие теги. –

+1

Спасибо, Анджело! – Shu

ответ

12

Отказ от ответственности: Я член комиссии и член PMC Apache Flink.

Как и Hadoop MapReduce, Apache Flink - это параллельный процессор данных с собственным API и механизмом выполнения. Flink стремится поддерживать многие из вариантов использования, которые Hadoop используется и хорошо играет со многими системами из экосистемы Hadoop, включая HDFS и YARN.

Я отвечу на ваш вопрос, выделив модель программирования MapReduce и модель выполнения MapReduce.

Программирование Модель

модель программирования Apache FLiNK базируется на концепции модели MapReduce программирования, но обобщает это несколькими способами. Flink предлагает функции «Карта» и «Уменьшить», а также дополнительные преобразования, такие как Join, CoGroup, Filter и Iterations. Эти преобразования могут быть собраны в произвольных потоках данных, включая несколько источников, поглотителей, потоков ветвления и объединения. Модель данных Flink является более общей, чем модель пары ключ-значение MapReduce, и позволяет использовать любые типы данных Java (или Scala). Ключи могут быть определены на этих типах данных гибким образом.

Следовательно, модель программирования Флинка представляет собой супер-набор модели программирования MapReduce. Это позволяет определять многие программы гораздо более удобным и сжатым способом. Я также хочу отметить, что в программах Flink можно внедрять немодифицированные функции Hadoop (Input/OutputFormats, Mapper, Reducers) и выполнять их совместно с родными функциями Flink.

Исполнение Модель

Глядя на модели исполнения, Flink заимствует многие понятия из параллельных систем реляционных баз данных. Flink имеет конвейерную модель обработки, которая уменьшает необходимость материализовать промежуточные результаты на локальных или распределенных файловых системах (в дополнение это также позволяет Flink выполнять обработку потока в реальном времени). Кроме того, выполнение программы Flink не тесно связано со спецификацией программы. В MapReduce (как это сделано Apache Hadoop) выполнение каждой программы MapReduce соответствует точно такой же схеме. Программы Flink предоставляются оптимизатору, который определяет эффективный план выполнения. Подобно реляционной СУБД, оптимизатор выбирает стратегии доставки и объединения данных таким образом, чтобы избежать дорогостоящих операций, таких как перетасовка и сортировка данных. Я должен отметить, что Flink не тестировался в массовом масштабе, который Hadoop работает. Я знаю настройки Flink, которые работают на 200 узлах.

3

Добавление ответа Фабиана:

Еще одно отличие заключается в том, что Flink не чистая система пакетной обработки, но может в то же время с низкой задержкой анализа потокового и предлагает хороший API для определения потоковых программ анализа ,

Внутренне, Флинк - фактически потоковая система. Для Flink пакетные программы - это особый случай потоковых программ.

 Смежные вопросы

  • Нет связанных вопросов^_^