Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзу по БД.docx
Скачиваний:
22
Добавлен:
12.02.2024
Размер:
257.66 Кб
Скачать
  1. Apache Kafka. Партиции и топики. Репликация данных. Распределение данных в топиках. Leader-follower архитектура. N-sync реплики. Удаление данных из Kafka.

Apache Kafka - это распределенная платформа для обработки потоковых данных. Она предоставляет высокую пропускную способность и надежность при передаче, хранении и обработке потоков данных.

Партиции и топики:

  • Топик: Это категория или канал, через который данные публикуются в Kafka. Он представляет собой лог-структуру, в которую записываются сообщения.

  • Партиция: Топик может быть разделен на несколько партиций. Каждая партиция - это упорядоченная последовательность сообщений. Партиции позволяют распределять данные по разным узлам кластера и обеспечивают масштабируемость и параллелизм при обработке сообщений.

Репликация данных:

Репликация данных в Kafka обеспечивает отказоустойчивость и надежность. Каждая партиция может иметь несколько реплик, которые распределены по разным брокерам (узлам кластера). Если один из брокеров выходит из строя, данные остаются доступными благодаря репликам.

Распределение данных в топиках:

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

Leader-follower архитектура:

В Kafka каждая партиция имеет одного лидера (leader) и несколько фолловеров (follower). Лидер отвечает за запись данных и обработку запросов на чтение и запись, фолловеры - за репликацию данных и обеспечение отказоустойчивости.

N-sync реплики:

N-sync реплика означает, что запись считается подтвержденной только после ее репликации на N узлах кластера. Это обеспечивает надежность и сохранность данных в случае сбоев.

Удаление данных из Kafka:

- В Kafka данные хранятся в логах (логических партициях) и удаление данных происходит путем установки политики хранения (retention policy). По истечении определенного срока или при достижении определенного размера, данные могут быть автоматически удалены из топиков.

  1. Airflow. Назначение и принцип работы. Dag. Сущности Operator и Sensor. Основные виды операторов.

Apache Airflow — это открытая платформа управления рабочими процессами, которая позволяет автоматизировать сложные рабочие процессы и потоки данных.

Назначение и принцип работы Apache Airflow:

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

DAG (Directed Acyclic Graph) — это граф, в котором узлы — это задачи, а направленные ребра — зависимости между задачами. Граф ориентирован в одном направлении и не содержит циклов, что гарантирует, что задачи выполняются в правильном порядке.

Operator представляет собой атомарную задачу внутри DAG. Он определяет, что именно должно быть выполнено. Airflow предоставляет множество встроенных операторов для различных задач. Например, BashOperator предназначен для выполнения команд в оболочке, PythonOperator — для выполнения Python-скриптов и т.д.

Sensor представляет собой оператор, который ожидает внешних условий для выполнения. Например, ExternalTaskSensor ожидает завершения другой задачи перед тем, как начать выполнение.

Основные виды операторов:

  • BashOperator: Выполняет команды в оболочке Bash.

  • PythonOperator: Запускает задачу, написанную на Python.

  • Sensor: Ожидает определенного условия перед выполнением.

  • DummyOperator: Пустой оператор, который может быть использован для создания зависимостей в DAG без фактического выполнения действий.

  • SubDagOperator: Позволяет встраивать подграфы DAG в основной граф.

  • BranchPythonOperator: Позволяет условно ветвить выполнение, основываясь на результате Python-функции.