Вопросы для собеседования на заводе Flink

задняя часть

Это 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.

Ниже мы представим основные различия между двумя фреймворками в нескольких аспектах:

  1. Модель архитектуры Основные роли Spark Streaming во время выполнения включают: Master, Worker, Driver и Executor, а основные роли Flink во время выполнения включают: Jobmanager, Taskmanager и Slot.

  2. Планирование задач Spark Streaming непрерывно генерирует крошечные пакеты данных и строит направленный ациклический граф DAG.Spark Streaming последовательно создает DStreamGraph, JobGenerator и JobScheduler. Flink создает StreamGraph на основе кода, отправленного пользователем, создает JobGraph после оптимизации, а затем отправляет его в JobManager для обработки. JobManager создает ExecutionGraph на основе JobGraph. ExecutionGraph — это основная структура данных для планирования Flink.

  3. Механизм времени Spark Streaming поддерживает механизм ограниченного времени, только время обработки. Flink поддерживает три определения времени для обработчиков потоков: время обработки, время события и время внедрения. Он также поддерживает механизм водяных знаков для обработки запаздывающих данных.

  4. Механизм отказоустойчивости Для задач 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.