---
title: Основы Spark
seo:
  title: Основы Spark — Data Engineer
  description: Тема «Основы Spark» для собеседования Data Engineer. Что такое Big Data? С какими объёмами приходилось работать?
---

[Все темы Data Engineer](/data-engineer)

### Spark📝 Вопросы

---

## <strong>Что такое Big Data?</strong> [#q-14bee738d69b81a4a7afc85b6822d2df]

"Big Data" - это термин, который обозначает обширные объемы данных, которые традиционные методы обработки данных не могут эффективно обрабатывать. Эти данные характеризуются тремя основными свойствами, известными как "3V"&#58; объем (великое количество данных), скорость (быстрота генерации и обработки данных) и разнообразие (широкий спектр типов данных). Обработка Big Data требует специальных инструментов и подходов, таких как распределенные системы хранения и обработки данных, машинное обучение и аналитика больших данных.

:::note[Ссылки для изучения]

1. [Что такое Big Data](https://blog.skillfactory.ru/chto-takoe-bolshie-dannye/)
   :::

---

## <strong>С какими объёмами приходилось работать?</strong> [#q-14bee738d69b81ce89d0d7b0cc477ecd]

Укажите реальный объём данных и контекст&#58; размер входа, число строк, объём за день, размер кластера и время обработки. Если работали только с небольшими наборами, так и скажите.

---

## <strong>Что такое</strong> <code>Spark</code> <code>Hadoop Hive</code><strong>?</strong> [#q-14bee738d69b81beb501d51e50b610eb]

<code>Spark</code>, <code>Hadoop</code> и <code>Hive</code> - это технологии,
используемые для обработки и анализа больших объемов данных.

1. <code>Apache Spark</code> - это высокопроизводительный фреймворк для
   обработки данных в памяти. Он предоставляет API на нескольких языках
   программирования для распределенной обработки данных, включая Python, Java и
   Scala. Spark может использоваться для выполнения широкого спектра задач,
   включая обработку потоковых данных, машинное обучение и аналитику данных.

1. <code>Apache Hadoop</code> - это фреймворк для распределенной обработки и
   хранения больших данных. Hadoop включает в себя несколько компонентов,
   включая Hadoop Distributed File System (HDFS) для хранения данных и MapReduce
   для обработки данных в распределенной среде.

1. <code>Apache Hive</code> - это инфраструктура для работы с данными в Hadoop,
   которая предоставляет SQL-подобный язык запросов, называемый HiveQL. Hive
   позволяет аналитикам и разработчикам выполнять аналитические запросы и
   агрегировать данные в Hadoop, используя привычный SQL-подход.

:::note[Ссылки для изучения]

1. [Hadoop и Spark, разница между платформами](https://aws.amazon.com/ru/compare/the-difference-between-hadoop-vs-spark/)
   :::

---

## <strong>Объясните архитектуру Apache Spark и основные компоненты.</strong> [#q-14bee738d69b81e6b978dad3af6f489e]

Архитектура Apache Spark состоит из следующих основных компонентов&#58;

1. <code>SparkContext</code>&#58; Главный объект, управляющий кластером и
   координирующий выполнение задач.

1. <code>Driver Program</code>&#58; Программа, запускающая SparkContext и
   управляющая процессом выполнения приложений.

1. Cluster Manager&#58; Выделяет ресурсы приложениям, например Spark standalone, YARN или Kubernetes.

1. Executors&#58; Процессы приложения на рабочих узлах, выполняющие задачи и хранящие данные в памяти или на диске.

1. <code>Tasks</code>&#58; Единицы работы, выполняемые на исполнителях.

1. <code>RDD</code> <strong>(Resilient Distributed Dataset)</strong>&#58;
   Основная абстракция данных, представляющая собой распределенную коллекцию
   неизменяемых объектов.

1. <code>Transformations and Actions</code>&#58; Операции над RDD для выполнения
   вычислений.

:::note[Ссылки для изучения]

1. [Что такое Apache Spark](https://blog.skillfactory.ru/glossary/spark/)
   :::

---

## <strong>Какова роль драйвера и исполнителей (</strong><code>executors</code><strong>) в Spark?</strong> [#q-14bee738d69b81fab240ecfc85efc94d]

Основные функции драйвера и исполнителя&#58;

- <code>Driver</code>&#58; Управляет жизненным циклом приложения, координирует
  выполнение задач, создает <code>SparkContext</code> и генерирует план
  выполнения задач (DAG). Он также собирает результаты вычислений и управляет
  выполнением действий.

- <code>Executors</code>&#58; Исполнители выполняют задачи, распределенные
  драйвером, и хранят данные в памяти или на диске. Каждый исполнитель работает
  в своем собственном процессе на узле кластера и может выполнять несколько
  задач параллельно.

:::note[Ссылки для изучения]

1. [Что такое Apache Spark](https://blog.skillfactory.ru/glossary/spark/)
   :::

---

## <strong>Как работает процесс планирования задач в Spark?</strong> [#q-14bee738d69b81cd9712ffb36be88a07]

Процесс планирования задач в Spark включает следующие шаги&#58;

1. <strong>Создание</strong> <code>DAG</code>&#58; Драйвер создает Directed
   Acyclic Graph (DAG) из трансформаций RDD.

1. <strong>Разбиение</strong> <code>DAG</code> <strong>на этапы (</strong>
   <code>Stages</code>
   <strong>)</strong>&#58; DAG делится на этапы, которые представляют собой
   группы задач, не требующих обмена данными между узлами.

1. <strong>Создание задач (</strong>
   <code>Tasks</code>
   <strong>)</strong>&#58; Каждый этап делится на задачи, соответствующие
   партициям данных.

1. Отправка задач&#58; драйвер непосредственно отправляет задачи executor-процессам. Кластерный менеджер выделяет ресурсы для их запуска.

1. <strong>Выполнение задач</strong>&#58; Исполнители выполняют задачи и
   возвращают результаты драйверу.

1. <strong>Обработка результатов</strong>&#58; Драйвер обрабатывает результаты и
   продолжает выполнение следующих этапов до завершения приложения.

:::note[Ссылки для изучения]

1. [Что такое Apache Spark](https://blog.skillfactory.ru/glossary/spark/)
   :::
