Разница между Apache Flume и Apache Flink

#flume #apache-flink #flume-ng #flink-streaming

#поток #apache-flink #flume-ng #flink-потоковая передача

Вопрос:

Мне нужно прочитать поток данных из некоторого источника (в моем случае это поток UDP, но это не должно иметь значения), преобразовать каждую запись и записать ее в HDFS.

Есть ли какая-либо разница между использованием Flume или Flink для этой цели?

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

Но я новичок в Flink, поэтому для меня похоже, что Flink сделает то же самое.

Какой из них лучше выбрать? Есть ли разница в производительности?

Пожалуйста, помогите!

Ответ №1:

Отказ от ответственности: Я являюсь коммиттером и членом PMC Apache Flink. У меня нет подробных знаний об Apache Flume.

Насколько я могу судить, перемещение потоковых данных из различных источников в HDFS является одним из основных вариантов использования Apache Flume. Это специализированный инструмент, и я бы предположил, что в него встроено множество связанных функций. Я не могу комментировать производительность Flume.

Apache Flink — это платформа для обработки потоков данных, более универсальная и многофункциональная, чем Flume (например, поддержка времени событий, расширенное управление окнами, высокоуровневые API, отказоустойчивые приложения и приложения с отслеживанием состояния …). С помощью Flink можно реализовать и выполнять множество различных приложений для обработки потоков, включая потоковую аналитику и CEP.

Flink имеет скользящий файловый приемник для записи потоков данных в файлы HDFS и позволяет реализовать все виды пользовательского поведения с помощью пользовательских функций. Однако это не специализированный инструмент для ввода данных в HDFS. Не ожидайте много встроенной функциональности для этого варианта использования. Flink обеспечивает очень хорошую пропускную способность и низкую задержку.

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

Ответ №2:

Отказ от ответственности: Я сторонник Apache Flume. У меня нет подробных знаний об Apache Flink.

Для описанного вами варианта использования Flume может быть правильным выбором.

Вы можете использовать исходный код Exec до тех пор, пока исходный код netcat UDP не будет передан в кодовую базу.

Сложно дать рекомендации по преобразованию, но вы можете захотеть взглянуть на перехватчик Morphline.

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

С точки зрения приемника, HDFS Sink, вероятно, удовлетворит ваши потребности.