В этом уроке мы обсудим Учебное пособие по внедрению приложений Spark.

Добро пожаловать на урок Внедрение приложений Spark в учебном пособии по Big Data Hadoop, который является частью онлайн-обучения по большим данным, предлагаемого OnlineITGURU.

В этом уроке мы обсудим, как реализовать приложение Spark. Вы также познакомитесь с SparkContext и параметрами кластера приложений Spark.

Давайте сначала рассмотрим цели этого урока.

Цели

После прохождения этого урока вы сможете:

  • Объясните разницу между Spark Shell и приложениями Spark.
  • Опишите SparkContext.
  • Расскажите о трех поддерживаемых диспетчерах кластерных ресурсов приложений Spark — Hadoop YARN, Spark Standalone и Apache Mesos.
  • Перечислите шаги для запуска приложения Spark.
  • Перечислите шаги для динамического распределения ресурсов.
  • Объясните различные конфигурации, связанные с приложением Spark.

Вы можете ознакомиться с предварительным просмотром курса онлайн-курса по большим данным.

Spark Shell и приложения Spark

В приведенной ниже таблице объясняется, чем оболочка Spark отличается от приложений Spark.

Spark Shell

Приложения Spark

  • Позволяет интерактивно исследовать и манипулировать данными
  • Пример: REPL с использованием Python или Scala
  • Запускать как независимые программы
  • Примеры: Python, Scala или Java, а также такие задания, как обработка ETL и потоковая передача.

SparkContext

Каждой программе Spark требуется SparkContext, который является основной точкой входа в Spark для приложения Spark. Интерактивная оболочка Spark Shell создаст ее для вас. Контекст искры поясняется на диаграмме ниже.

Первое, что необходимо сделать любой программе Spark, — это создать объект SparkContext, который сообщает Spark, как получить доступ к кластеру через диспетчер ресурсов.

Чтобы создать SparkContext, начните с создания объекта SparkConf, который содержит информацию о вашем приложении.

Вы можете создать SparkContext в приложении Spark. В оболочке Spark для вас уже создан специальный SparkContext в переменной с именем sc. Если вы хотите завершить программу, вы можете вызвать sc.stop.

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

Вот пример, в котором вы можете увидеть, как SparkContext инициируется в Scala.

Здесь вычисляется количество строк, содержащих «a», и строк, содержащих «b».

В следующих разделах мы узнаем о различных вариантах кластеров приложений Spark и поддерживаемых менеджерах ресурсов кластера.

Параметры кластера приложений Spark

Приложения Spark могут работать локально без какой-либо распределенной обработки, локально с несколькими рабочими потоками и в кластере.

Локальный режим

Приложение Spark, работающее локально, показано ниже.

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

Режим кластера

Приложение Spark, работающее в кластере, показано ниже.

Поддерживаемые менеджеры ресурсов кластера

Три поддерживаемых менеджера кластерных ресурсов приложений Spark: Hadoop YARN, Spark Standalone и Apache Mesos.

ПРЯЖА Hadoop

Hadoop YARN входит в состав облачного дистрибутива Hadoop или CDH. Hadoop YARN чаще всего используется для рабочих площадок и позволяет совместно использовать ресурсы кластера с другими приложениями.

Автономная версия Spark

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

Апач Месос

Apache Mesos была первой платформой, поддерживаемой Spark. Однако в настоящее время он не так популярен, как другие менеджеры ресурсов.

В следующем разделе мы узнаем, как запустить Spark на Hadoop YARN как в режиме клиента, так и в режиме кластера.

Запуск Spark на YARN: клиентский режим (1)

Теперь, когда вы знаете, что такое три поддерживаемых диспетчера ресурсов кластера, давайте разберемся, как Spark работает в Hadoop YARN.

Как видно из диаграммы, когда Spark запускается в клиентском режиме, SparkContext запускается на клиентском компьютере.

Менеджер ресурсов открывает мастер приложений, который, в свою очередь, открывает исполнителей и выполняет программу.

Запуск Spark на YARN: клиентский режим (2)

На приведенной ниже диаграмме видно, что как только исполнители завершают обработку, они возвращают результат в SparkContext.

Теперь давайте рассмотрим пример, когда другой клиент открыл SparkContext.

Запуск Spark на YARN: клиентский режим (3)

Это приложение имеет свой собственный мастер приложений, который открывает свои собственные исполнители.

Как только исполнители завершат обработку, они возвращают результат в новый SparkContext, как показано на диаграмме ниже.

Запуск Spark на YARN: клиентский режим (4)

Вы видели, как Spark работает в режиме клиента. Теперь давайте разберемся, как Spark работает в режиме кластера.

Запуск Spark на YARN: кластерный режим (1)

В случае кластерного режима SparkContext, присутствующий в кластере, открывает новые исполнители.

Как только исполнители завершат задачу, она возвращает значение в SparkContext. Как упоминалось ранее, приложение Spark может работать в разных режимах.

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

Запуск приложения Spark

Давайте сначала разберемся, как запустить приложение Spark локально.

Запуск приложения Spark локально

Чтобы запустить приложение Spark локально, используйте команду spark-submit — master, чтобы указать параметр кластера.

Вот различные местные варианты:

  • Используйте local[*] для локального запуска приложения с количеством потоков, равным количеству ядер. Это опция по умолчанию.
  • Используйте local[n] для локального запуска приложения с n потоками.
  • Используйте local для локального запуска приложения в одном потоке.

Запуск приложения Spark в кластере

Чтобы запустить приложение Spark в кластере, используйте команду spark-submit — master, чтобы указать параметр кластера. Различные варианты кластера:

  • Пряжа-клиент
  • Пряжа-кластер
  • spark://masternode:port, который используется в Spark Standalone.
  • mesos://masternode:port, который используется в Apache Mesos.

Запуск приложения Spark в кластере

Вы можете не только запустить приложение Spark в кластере, вы также можете запустить оболочку Spark в кластере. И у pyspark, и у spark-shell есть опция — master.

Оболочку Spark необходимо запускать только в режиме клиента Hadoop YARN, чтобы машина, на которой вы работаете, выступала в качестве драйвера.

Чтобы запустить оболочку Spark, используйте URL-адрес диспетчера кластера Spark или Apache Mesos.

По умолчанию вы можете запускать local[*] с таким количеством потоков, сколько ядер. Вы также можете запускать local[n] локально с n рабочими потоками и запускать локально без распределенной обработки.

Резюме

А теперь подведем итог тому, что мы узнали на этом уроке.

  • Spark Shell позволяет интерактивно исследовать данные и манипулировать ими, в то время как приложения Spark работают как независимые программы.
  • Каждой программе Spark нужен SparkContext.
  • Интерактивная оболочка Spark Shell создает его для пользователя.
  • Приложения Spark могут работать локально без какой-либо распределенной обработки, локально с несколькими рабочими потоками и в кластере.
  • Три поддерживаемых менеджера кластерных ресурсов приложений Spark: Hadoop YARN, Spark Standalone и Apache Mesos.
  • Spark предоставляет множество свойств для настройки приложения, таких как spark.master, spark.app.name, spark.local.dir, spark.ui.port, spark.executor.memory и spark.driver.memory.
  • Приложения Spark можно настроить декларативно или программно.

Хотите пройти наш курс сертификации разработчиков больших данных Hadoop и Spark? сертификация Hadoop для больших данных

Вывод

На этом урок «Реализация приложений Spark» завершен.