Это 30-й день моего участия в Gengwen Challenge.Подробности о мероприятии, пожалуйста, проверьте:Обновить вызов
Краткое введение в Flink
Flink — это фреймворк и механизм распределенной обработки для вычислений с отслеживанием состояния на неограниченных и ограниченных потоках данных. И Flink обеспечивает основные функции, такие как распределение данных, механизм отказоустойчивости и управление ресурсами. Flink предоставляет пользователям множество API-интерфейсов абстракции высокого уровня для написания распределенных задач:
API DataSet, который выполняет пакетные операции со статическими данными и абстрагирует статические данные в распределенные наборы данных. Пользователи могут легко использовать различные операторы, предоставляемые Flink для обработки распределенных наборов данных. Поддерживаются Java, Scala и Python.
API DataStream выполняет операции потоковой обработки потоков данных, абстрагирует потоковые данные в распределенные потоки данных, пользователи могут легко выполнять различные операции с распределенными потоками данных и поддерживает Java и Scala.
Table API, операции запросов к структурированным данным, абстрагирование структурированных данных в реляционные таблицы и выполнение различных операций запросов к реляционным таблицам с помощью SQL-подобного DSL с поддержкой Java и Scala.
Кроме того, Flink также предоставляет доменные библиотеки для конкретных областей применения, таких как: Flink ML, библиотека машинного обучения Flink, предоставляет API конвейеров машинного обучения и реализует различные алгоритмы машинного обучения. Gelly, библиотека графовых вычислений Flink, предоставляет API-интерфейсы, связанные с графовыми вычислениями и реализацией различных алгоритмов графовых вычислений.
Разница между Flink и Spark Streaming
Это очень широкий вопрос, потому что между двумя фреймворками так много различий. Но есть очень важный момент, на который нужно ответить во время интервью: Flink — это стандартный движок обработки в реальном времени, основанный на событийном управлении. А Spark Streaming — это модель Micro-Batch.
Ниже мы представим основные различия между двумя фреймворками в нескольких аспектах:
-
Модель архитектуры Основные роли Spark Streaming во время выполнения включают: Master, Worker, Driver и Executor, а основные роли Flink во время выполнения включают: Jobmanager, Taskmanager и Slot.
-
Планирование задач Spark Streaming непрерывно генерирует крошечные пакеты данных и строит направленный ациклический граф DAG.Spark Streaming последовательно создает DStreamGraph, JobGenerator и JobScheduler. Flink создает StreamGraph на основе кода, отправленного пользователем, создает JobGraph после оптимизации, а затем отправляет его в JobManager для обработки. JobManager создает ExecutionGraph на основе JobGraph. ExecutionGraph — это основная структура данных для планирования Flink.
-
Механизм времени Spark Streaming поддерживает механизм ограниченного времени, только время обработки. Flink поддерживает три определения времени для обработчиков потоков: время обработки, время события и время внедрения. Он также поддерживает механизм водяных знаков для обработки запаздывающих данных.
-
Механизм отказоустойчивости Для задач Spark Streaming мы можем установить контрольные точки, а затем, если произойдет сбой и произойдет перезапуск, мы сможем восстановиться с последней контрольной точки, но такое поведение может только предотвратить потерю данных и может обрабатываться повторно, но не может обрабатываться точно раз семантика. Flink использует протокол двухфазной фиксации для решения этой проблемы.
3 Каковы роли кластера Flink? Какова роль каждого?
Программы Flink в основном имеют три роли: TaskManager, JobManager и Client во время выполнения.
JobManager играет роль диспетчера Master в кластере, является координатором всего кластера, отвечает за прием заданий Flink, координацию контрольных точек, аварийное восстановление и т. д., а также за управление подчиненным узлом TaskManager в кластере Flink.
TaskManager — это Worker, который фактически отвечает за выполнение вычислений.Набор задач, на которых выполняется задание Flink.Каждый TaskManager отвечает за управление информацией о ресурсах на своем узле, такой как память, диск и сеть, и отправляет статус ресурса в JobManager при его запуске.
Клиент — это клиент, представленный программой Flink. Когда пользователь отправляет программу Flink, сначала будет создан клиент. Клиент сначала предварительно обработает программу Flink, отправленную пользователем, и отправит ее в кластер Flink для обработки. Клиент должен быть обработан от пользователя.Получите адрес JobManager из отправленной конфигурации программы Flink, установите соединение с JobManager и отправьте задание Flink в JobManager.