В этом уроке мы обсудим Учебное пособие по внедрению приложений 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» завершен.