Apache Flink - Архитектура

Apache Flink работает с архитектурой Kappa. Архитектура Kappa имеет единственный процессор - stream, который обрабатывает весь ввод как поток, а механизм потоковой передачи обрабатывает данные в реальном времени. Пакетные данные в архитектуре каппа - это частный случай потоковой передачи.

На следующей диаграмме показан Apache Flink Architecture.

Ключевая идея в архитектуре Kappa - обрабатывать как пакетные данные, так и данные в реальном времени с помощью единого механизма потоковой обработки.

Большинство фреймворков больших данных работает на архитектуре Lambda, которая имеет отдельные процессоры для пакетных и потоковых данных. В архитектуре Lambda у вас есть отдельные кодовые базы для пакетного и потокового представлений. Для запроса и получения результата необходимо объединить кодовые базы. Не поддерживать отдельные кодовые базы / представления и объединять их - это проблема, но архитектура Kappa решает эту проблему, поскольку имеет только одно представление - в реальном времени, поэтому слияние кодовой базы не требуется.

Это не означает, что архитектура Kappa заменяет архитектуру Lambda, это полностью зависит от варианта использования и приложения, которое решает, какая архитектура будет предпочтительнее.

На следующей диаграмме показана архитектура выполнения задания Apache Flink.

Программа

Это фрагмент кода, который вы запускаете в кластере Flink.

Клиент

Он отвечает за принятие кода (программы) и построение графа потока данных задания, а затем передачу его в JobManager. Он также получает результаты работы.

JobManager

После получения графика потока данных задания от клиента он отвечает за создание графика выполнения. Он назначает задание диспетчерам задач в кластере и контролирует выполнение задания.

Диспетчер задач

Он отвечает за выполнение всех задач, которые были назначены JobManager. Все диспетчеры задач запускают задачи в своих отдельных слотах с указанным параллелизмом. Он отвечает за отправку статуса задач в JobManager.

Особенности Apache Flink

Особенности Apache Flink следующие:

  • Он имеет потоковый процессор, который может запускать как пакетные, так и потоковые программы.

  • Он может обрабатывать данные с молниеносной скоростью.

  • API-интерфейсы доступны на Java, Scala и Python.

  • Предоставляет API-интерфейсы для всех стандартных операций, которые очень легко использовать программистам.

  • Обрабатывает данные с малой задержкой (наносекунды) и высокой пропускной способностью.

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

  • Может легко интегрироваться с Apache Hadoop, Apache MapReduce, Apache Spark, HBase и другими инструментами для работы с большими данными.

  • Управление в памяти можно настроить для улучшения вычислений.

  • Он хорошо масштабируется и может масштабироваться до тысяч узлов в кластере.

  • Окно в Apache Flink очень гибкое.

  • Предоставляет библиотеки обработки графиков, машинного обучения и обработки сложных событий.