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

Создание Spark Job

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

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

На странице Overview нажмите Create Job в правом верхнем углу вкладки Spark Jobs или нажмите Create Job в правом верхнем углу страницы Spark Jobs. Отображается страница редактирования Spark‑задачи.

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

Если вам не требуется создавать временный DLI temporary data bucket и вы не хотите получать это сообщение, выберите Do not show again и нажмите Cancel.

Требования

  • Вы загрузили зависимости в соответствующий OBS bucket на странице Data Management > Package Management.
  • Перед созданием Spark‑задачи для доступа к другим внешним источникам данных, таким как OpenTSDB, HBase, Kafka, DWS, RDS, CSS, CloudTable, DCS Redis и DDS, необходимо создать datasource connection, чтобы обеспечить сеть между очередью выполнения задачи и внешними источниками данных.

Процедура

  1. В левой панели навигации консоли управления DLI выберите Job Management > Spark Jobs. Отображается страница Spark Jobs.

    Нажмите Create Job в правом верхнем углу. В окне редактирования задачи вы можете задавать параметры в режиме Fill Form или режиме Write API.

    Ниже в качестве примера используется Fill Form. В режиме Write API обратитесь к Data Lake Insight API Reference для настройки параметров.

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

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

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

    Параметр

    Описание

    Приложение

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

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

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

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

    агентство

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

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

    Main Class (--class)

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

    Application Parameters

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

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

  3. Настройте задание.
    Table 2 Job configuration parameters

    Parameter

    Description

    Job Name (--name)

    Установите имя задания.

    Spark Arguments(--conf)

    Введите параметр в формате key=value. Нажмите Enter, чтобы разделить несколько пар ключ‑значение.

    Эти параметры можно заменить глобальными переменными. Например, если вы создадите глобальную переменную custom_class на странице Global Configuration > Global Variables, вы можете использовать "spark.sql.catalog"={{custom_class}} для замены параметра этой переменной после отправки задания.

    ПРИМЕЧАНИЕ:
    • Алгоритм сборки мусора JVM нельзя настроить для заданий Spark.
    • Если версия Spark 3.1.1, настройте Spark parameters (--conf) для выбора модуля зависимости. Подробности примера конфигурации см. в Table 3.

    Если вы выбираете 3.3.1 для Spark Version, вы можете настроить параметры спецификации вычислительных ресурсов в Spark Argument(--conf). Обратите внимание, что приоритет конфигурации Spark Argument(--conf) выше, чем у Resource Specifications(Optional) в Advanced Settings.

    Table 4 описывает сопоставление параметров.

    ПРИМЕЧАНИЕ:

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

    Access Metadata

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

    При установке Yes также необходимо задать Metadata Source.

    Retry upon Failure

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

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

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

    Table 3 Spark Parameter (--conf) конфигурация

    Datasource

    Example Value

    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/*

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

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

    Spark Argument(--conf)

    Описание

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

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

    Complete executor memory = spark.executor.memory + spark.executor.memoryOverhead

    spark.executor.memory

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

    -

    spark.executor.memoryOverhead

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

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

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

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

    spark.executor.memoryOverheadFactor

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

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

    Executor Cores

    spark.executor.cores

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

    -

    Executors

    spark.executor.instances

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

    -

    Driver Cores

    spark.driver.cores

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

    -

    Driver Memory

    Полный объём памяти драйвера = spark.driver.memory + spark.edriver.memoryOverhead

    spark.driver.memory

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

    -

    spark.driver.memoryOverhead

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

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

    spark.driver.memoryOverhead=

    spark.driver.memory * spark.driver.memoryOverheadFactor

    Минимальное значение — 384 MB. То есть, когда значение 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) Настройте зависимости.
    Table 5 Параметры конфигурации зависимостей

    Параметр

    Описание

    JAR Package Dependencies (--jars)

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

    Python File Dependencies (--py-files)

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

    Other Dependencies (--files)

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

    Group Name

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

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

  5. Установите следующие параметры в расширенных настройках:
    • Select Dependency Resources: Подробную информацию о параметрах см. в Table 6.
    • Configure Resources: Подробную информацию о параметрах см. в Table 7.
      Note

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

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

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

      Note that Spark tasks need to be jointly executed by multiple roles, such as driver and executor. So, the number of executors multiplied by the number of executor CPU cores must be less than the number of compute CUs of the queue to prevent other roles from failing to start Spark tasks. For more information about roles for Spark tasks, see Apache Spark.

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

      • Number of CUs = Actual number of CUs = Max{(Driver Cores + Executors x Executor Cores), [(Driver Memory + Executors x Executor Memory)/4]}
      • Memory = Driver Memory + (Executors x Executor Memory)
    Table 6 Параметры выбора зависимых ресурсов

    Parameter

    Описание

    модули

    Если версия Spark 3.1.1, вам не нужно выбирать модуль. Настройте Spark parameters (--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 и files.

    Table 7 Параметры спецификации ресурса

    Параметр

    Описание

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

    Выберите resource specification из drop-down list box. Система предоставляет три варианта resource specification для выбора.

    Resource specifications включают следующие параметры:

    • Executor Memory
    • Executor Cores
    • Executors
    • Driver Cores
    • Driver Memory

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

    Executor Memory

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

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

    Executor Cores

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

    Executors

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

    Driver Cores

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

    Driver Memory

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

    • Если вы выбираете 3.3.1 для Spark Version, вы можете настроить параметры спецификации вычислительных ресурсов в Spark Argument(--conf). Обратите внимание, что приоритет конфигурации Spark Argument(--conf) выше, чем у Resource Specifications(Optional) в Advanced Settings.

      Table 4 описывает сопоставление параметров.

      Note

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

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

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

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

      Parameter

      Эластичный пул ресурсов Standard Edition после изменения

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

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

      450 МБ до 64 ГБ

      450 МБ до 16 ГБ

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

      0 до 16

      0 до 4

      Исполнители

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

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

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

      0 до 16

      0 до 4

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

      450 MB до 64 GB

      450 MB до 16 GB

      Job CU Quota

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

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

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

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

    Note

    Во время процесса отправки Spark job, если задача не может успешно получить ресурсы в течение длительного периода, её статус изменится на Failed после ожидания примерно 3 часов, что указывает на завершение сеанса. Подробную информацию о статусах Spark job см. в разделе Viewing Basic Information.