Облачная платформаAdvanced

Создание Spark Джобы

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

DLI Spark Джобы предоставляют полностью управляемые сервисы вычислений Spark.

На Обзор странице, щелкните Создать Джобу в правом верхнем углу Spark Джобы вкладке или щелкните Создать Джобу в правом верхнем углу Spark Джобы страница. Отображается страница редактирования Spark Джобы.

На странице редактирования Spark Джобы отображается сообщение, указывающее, что будет создан временный DLI бакет данных. Созданный бакет используется для хранения временных данных, генерируемых DLI, таких как журналы задач и результаты задач. Вы не сможете просматривать журналы задач, если решите не создавать бакет. Бакет будет создан, и будет использовано имя бакета по умолчанию.

Если вам не нужно создавать временный DLI бакет данных и вы не хотите получать это сообщение, выберите Не показывать снова и нажмите Отмена.

Требования

Процедура

  1. В левой навигационной панели консоли управления DLI выберите Управление заданиями > Spark Задания. Эта Spark Задания страница отображается.

    Нажмите Создать Джоб в правом верхнем углу. В окне редактирования Джобы вы можете задавать параметры в Заполнить форму режим или Записать API режим.

    Следующее использует Заполнить форму в качестве примера. В Записать API режим, обратитесь к Data Lake Insight справочник API для настройки параметров.

  1. Выберите очередь.
    1. Очереди: Выберите очередь из выпадающего списка.
    2. Версия Spark: Выберите версию Spark из выпадающего списка. Рекомендуется последняя версия.
      Note

      Рекомендуется не использовать Spark разных версий длительное время.

      • Это может привести к несовместимости кода, что может отрицательно сказаться на эффективности выполнения задач.
      • Это может привести к сбоям выполнения задач из‑за конфликтов зависимостей. Задачи зависят от конкретных версий библиотек или компонентов.
  2. Настройте приложение.
    Таблица 1 Параметры конфигурации приложения

    Параметр

    Описание

    Приложение

    Выберите пакет для выполнения. Значение может быть .jar или .py.

    Существует следующие способы управления JAR‑файлами:

    • Загрузить пакеты в OBS: заранее загрузите JAR‑файлы в OBS‑бакет и укажите соответствующий путь OBS.
    • Загрузите пакеты в DLI: загрузите JAR‑файлы в OBS Бакет заранее и создайте пакет на the Data Management > Package Management страница консоли управления DLI. Подробнее см. Creating a DLI Package.

    Для Spark 3.3.x в более поздних версиях вы можете выбирать пакеты только в путях OBS.

    Agency

    Перед использованием Spark 3.3.1 и более поздних версий (сценарий общих очередей Spark) для выполнения задач необходимо создать агентство в консоли IAM и добавить информацию о новом агентстве. Подробнее см. Customizing DLI Agency Permissions.

    Распространённые сценарии создания агентства: DLI разрешено читать и записывать данные из OBS и в OBS для передачи журналов. DLI разрешено получать доступ к DEW для получения учётных данных доступа к данным и доступа к каталогам для получения метаданных.

    Главный класс (--class)

    Введите имя главного класса. Когда тип приложения .jar, имя главного класса не может быть пустым.

    Параметры приложения

    Пользовательские параметры. Разделяйте несколько параметров Введите.

    Эти параметры могут быть заменены глобальными переменными. Например, если вы создаете глобальную переменную batch_num на Глобальная конфигурация > Глобальные переменные странице, вы можете использовать {{batch_num}} чтобы заменить параметр этой переменной после отправки задания.

  3. Настройте задание.
    Таблица 2 Job configuration parameters

    Parameter

    Description

    Job Name (--name)

    Set a job name.

    Spark Arguments(--conf)

    Enter a parameter in the format of key=value. Press Enter to separate multiple key-value pairs.

    These parameters can be replaced with global variables. For example, if you create a global variable custom_class on the Global Configuration > Global Variables page, you can use "spark.sql.catalog"={{custom_class}} to replace a parameter with this variable after the job is submitted.

    NOTE:
    • The JVM garbage collection algorithm cannot be customized for Spark jobs.
    • If the Spark version is 3.1.1, configure Spark parameters (--conf) to select a dependency module. For details about the example configuration, see Table 3.

    If you select 3.3.1 for Spark Version, you can configure compute resource specification parameters in Spark Argument(--conf). Note that the configuration priority of Spark Argument(--conf) is higher than that of Resource Specifications(Optional) in Расширенные настройки.

    Таблица 4 описывает сопоставление параметров.

    ПРИМЕЧАНИЕ:

    При настройке параметров спецификации вычислительных ресурсов в Аргумент Spark(--conf), вы можете использовать единицы M, G или K. Если единица не указана, единицей по умолчанию является байт.

    Доступ к метаданным

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

    При установке значения Да, вам также необходимо установить Источник метаданных.

    Повторить при сбое

    Указывает, следует ли повторять неудачную джобу.

    Если вы выберете Да, вам нужно задать следующие параметры:

    Максимальное количество повторов: Максимальное количество попыток повторения. Максимальное значение равно 100.

    Таблица 3 Конфигурация параметра Spark (--conf)

    Источник данных

    Пример значения

    CSS

    spark.driver.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/css/*

    spark.executor.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/css/*

    DWS

    spark.driver.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/dws/*

    spark.executor.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/dws/*

    HBase

    spark.driver.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/hbase/*

    spark.executor.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/hbase/*

    OpenTSDB

    spark.driver.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/opentsdb/*

    spark.executor.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/opentsdb/*

    RDS

    spark.driver.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/rds/*

    spark.executor.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/rds/*

    Redis

    spark.driver.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/redis/*

    spark.executor.extraClassPath=/usr/share/extension/dli/spark-jar/datasource/redis/*

    Таблица 4 Соответствие параметров спецификации вычислительных ресурсов в консоли и Spark Argument(--conf)

    Параметр консоли

    Аргумент Spark(--conf)

    Описание

    Примечания и ограничения

    Память исполнителя

    Полная память исполнителя = spark.executor.memory + spark.executor.memoryOverhead

    spark.executor.memory

    Память исполнителя, которая настраивается.

    -

    spark.executor.memoryOverhead

    Объём памяти вне кучи для каждого исполнителя в приложении Spark. Этот параметр не настраивается.

    spark.executor.memoryOverhead=spark.executor.memory * spark.executor.memoryOverheadFactor

    Минимальное значение — 384 MB.

    То есть, когда значение spark.executor.memory умноженное на spark.executor.memoryOverheadFactor меньше 384 МБ, система автоматически устанавливает значение 384 МБ.

    spark.executor.memoryOverheadFactor

    Этот параметр определяет соотношение выделения памяти вне кучи к выделению памяти в куче. Значение по умолчанию 0.1 для приложений Spark, запущенных с JAR‑файлом и 0.4 для тех, которые запущены с Python. Этот параметр настраиваемый.

    Приоритет spark.executor.memoryOverheadFactor выше, чем у spark.kubernetes.memoryOverheadFactor.

    Ядра исполнителя

    spark.executor.cores

    Количество ядер исполнителя, которое можно настроить.

    -

    Исполнители

    spark.executor.instances

    Количество исполнителей, которое настраивается.

    -

    Ядра драйвера

    spark.driver.cores

    Количество ядер драйвера, которое настраивается.

    -

    Память драйвера

    Полная память драйвера = spark.driver.memory + spark.edriver.memoryOverhead

    spark.driver.memory

    Память драйвера, которая настраивается.

    -

    spark.driver.memoryOverhead

    Объём памяти вне кучи для каждого драйвера в приложении Spark.

    Этот параметр не настраивается.

    spark.driver.memoryOverhead=

    spark.driver.memory * spark.driver.memoryOverheadFactor

    Минимальное значение — 384 МБ. То есть, когда значение spark.driver.memory умножено на spark.driver.memoryOverheadFactor меньше 384 MB, система автоматически устанавливает значение 384 MB.

    spark.driver.memoryOverheadFactor

    Этот параметр определяет отношение выделения памяти вне кучи к выделению памяти в куче. Значение по умолчанию 0.1 для Spark‑приложений, запускаемых с JAR‑файлом и 0.4 для тех, которые запускаются с Python. Этот параметр настраивается.

    Приоритет spark.driver.memoryOverheadFactor выше, чем spark.kubernetes.memoryOverheadFactor.

    -

    spark.kubernetes.memoryOverheadFactor

    Объём памяти, выделяемый вне памяти, назначенной исполнителям Spark. Значение по умолчанию 0.1 для приложений Spark, запускаемых с JAR‑файлом и 0.4 для тех, которые запускаются с Python. Этот параметр настраивается.

    Приоритет spark.executor.memoryOverheadFactor и spark.driver.memoryOverheadFactor выше, чем spark.kubernetes.memoryOverheadFactor.

  4. (Optional) Настройте зависимости.
    Таблица 5 Параметры конфигурации зависимостей

    Параметр

    Описание

    Зависимости пакета JAR (--jars)

    JAR‑файл, от которого зависит задача Spark. Вы можете ввести имя JAR‑файла или путь OBS к JAR‑файлу в формате obs://Бакет имя/Папка путь/JAR файл имя.

    Python Файл Зависимости (--py-files)

    py-files от которых зависит задача Spark. Вы можете ввести имя файла Python или соответствующий OBS путь файла Python. Формат следующий: obs://Бакет имя/Папка имя/Файл имя.

    Другие Зависимости (--files)

    Другие файлы от которых зависит задача Spark. Вы можете ввести имя файла зависимости или соответствующий OBS путь файла зависимости. Формат следующий: obs://Бакет имя/Имя папки/Имя файла.

    Имя группы

    Если при создании пакета вы выбираете группу, вы можете выбрать все пакеты и файлы в этой группе. Как создать пакет, см Создание пакета DLI.

    Spark 3.3.x или более новые версии не поддерживают настройку информации о группе.

  5. Установите следующие параметры в расширенных настройках:
    • Выберите ресурсы зависимости: Для получения подробной информации о параметрах см Таблица 6.
    • Настройте ресурсы: Для получения подробной информации о параметрах см Таблица 7.
      Note

      Степень параллелизма ресурсов Spark определяется совместно числом Executors и числом ядер CPU Executor.

      Максимальное количество задач, которые могут выполняться одновременно = Number of Executors x Number of Executor CPU cores

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

      Обратите внимание, что задачи Spark необходимо совместно выполнять несколькими ролями, такими как driver и executor. Поэтому число executors, умноженное на число ядер CPU executor, должно быть меньше количества вычислительных CUs очереди, чтобы предотвратить сбой запуска задач Spark другими ролями. Для получения дополнительной информации о ролях задач Spark, см Apache Spark.

      Формула расчёта параметров задачи Spark:

      • Количество CUs = Фактическое количество CUs = Max{(Driver Cores + Executors x Executor Cores), [(Driver Memory + Executors x Executor Memory)/4]}
      • Память = Память драйвера + (Исполнители x Память исполнителя)
    Таблица 6 Параметры выбора зависимых ресурсов

    Параметр

    Описание

    модули

    Если версия Spark 3.1.1, вам не нужно выбирать модуль. Настройте Параметры Spark (--conf).

    Зависимые модули, предоставляемые DLI для выполнения задач подключения источников данных. Для доступа к различным сервисам необходимо выбирать разные модули.

    • MRS HBase: sys.datasource.hbase
    • DDS: sys.datasource.mongo
    • MRS OpenTSDB: sys.datasource.opentsdb
    • DWS: sys.datasource.dws
    • RDS MySQL: sys.datasource.rds
    • RDS PostGre: sys.datasource.rds
    • DCS: sys.datasource.redis
    • CSS: sys.datasource.css

    Пакет ресурсов

    JAR‑пакет, от которого зависит задача Spark.

    Spark 3.3.x или более поздние версии не поддерживают этот параметр. Укажите информацию о пакете ресурсов в jars, pyFiles, и файлы.

    Таблица 7 Параметры спецификации ресурсов

    Параметр

    Описание

    Спецификации ресурсов

    Выберите спецификацию ресурсов из раскрывающегося списка. Система предоставляет три варианта спецификации ресурсов, из которых вы можете выбрать.

    Спецификации ресурсов включают следующие параметры:

    • Память исполнителя
    • Ядра исполнителя
    • Исполнители
    • Ядра драйвера
    • Память драйвера

    Если изменено, будут использованы ваши изменённые настройки элементов.

    Память исполнителя

    Настройте элемент конфигурации на основе выбранных спецификаций ресурсов.

    Память каждого исполнителя. Рекомендуется, чтобы соотношение ядер CPU исполнителя к памяти исполнителя было 1:4.

    Ядра исполнителя

    Количество ядер CPU каждого исполнителя, запрашиваемое Spark‑задачами, определяющее возможность каждого исполнителя выполнять задачи одновременно.

    Исполнители

    Количество исполнителей, запрашиваемое Spark‑задачей

    Ядра драйвера

    Количество ядер CPU драйвера

    Память драйвера

    Размер памяти драйвера. Рекомендуется, чтобы соотношение количества ядер CPU драйвера к памяти драйвера было 1:4.

    • Если вы выберете 3.3.1 для Версия Spark, вы можете настроить параметры спецификации вычислительных ресурсов в Spark Аргумент(--conf). Обратите внимание, что приоритет конфигурации Spark Аргумент(--conf) выше, чем у Спецификации ресурсов (Optional) в Дополнительные настройки.

      Таблица 4 описывает сопоставление параметров.

      Note

      При настройке параметров спецификации вычислительных ресурсов в Spark Аргумент(--conf), вы можете использовать единицы M, G или K. Если единица не указана, единицей по умолчанию является байт.

    • Spark 3.3.1 или более поздняя версия включает примечания и ограничения по спецификациям вычислительных ресурсов для заданий. Для подробностей см. Таблица 8.
      Caution

      Если спецификация вычислительных ресурсов установлена слишком высокой, превышая возможности распределения ресурсов кластера или проекта, задание может завершиться ошибкой из‑за отказа в запросе ресурсов.

      Таблица 8 Диапазоны значений спецификаций вычислительных ресурсов

      Параметр

      Эластичный пул ресурсов Standard Edition после модификации

      Эластичный пул ресурсов Basic Edition

      Память Executor

      450 MB до 64 GB

      450 MB до 16 GB

      Ядра Executor

      0 до 16

      0 до 4

      Executor'ы

      Неограниченно

      Неограниченно

      Ядра драйвера

      0 to 16

      0 to 4

      Память драйвера

      450 MB to 64 GB

      450 MB to 16 GB

      Квота задания CU

      Неограниченно

      Неограниченно

  6. Нажмите Выполнить в правом верхнем углу страницы редактирования задания Spark.

    После отображения сообщения "Batch processing job submitted successfully" вы можете просмотреть статус и журналы отправленного задания на Задания Spark странице.

    Note

    Во время процесса отправки задания Spark, если задание длительное время не может успешно получить ресурсы, статус задания изменится на Не удалось после ожидания примерно 3 часа, указывая, что сеанс завершён. Для получения деталей о статусах задач Spark, смотрите Просмотр основной информации.