Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Processing
  • Начало работы
    • Взаимосвязь ресурсов сервиса
    • Среда исполнения
    • Интерфейсы и порты компонентов Yandex Data Processing
    • Задания в Yandex Data Processing
    • Задания Spark
    • Автоматическое масштабирование
    • Декомиссия подкластеров и хостов
    • Сеть в Yandex Data Processing
    • Техническое обслуживание
    • Квоты и лимиты
    • Хранилище в Yandex Data Processing
    • Свойства компонентов
    • Apache Iceberg™ в Yandex Data Processing
    • Delta Lake в Yandex Data Processing
    • Логи в Yandex Data Processing
    • Скрипты инициализации
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Переменные окружения
  • Ошибки скриптов инициализации
  • Ошибки синтаксиса
  1. Концепции
  2. Скрипты инициализации

Скрипты инициализации

Статья создана
Yandex Cloud
Обновлена 31 января 2025 г.
  • Переменные окружения
  • Ошибки скриптов инициализации
    • Ошибки синтаксиса

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

В первой строке файла скрипта укажите полный путь к интерпретатору, например, #!/bin/sh или #!/usr/bin/python.

URI скрипта может быть задан в схемах https://, http://, hdfs:// и s3a://. Для s3a:// требуется выполнение хотя бы одного из условий:

  • ACL бакета должен разрешать сервисному аккаунту кластера операции чтения.
  • Сервисному аккаунту кластера должна быть присвоена роль storage.viewer.
  • Доступ к бакету должен быть публичным.

Переменные окруженияПеременные окружения

Для использования в скриптах инициализации доступны следующие переменные окружения:

  • CLUSTER_ID — идентификатор кластера.
  • S3_BUCKET — имя привязанного бакета Yandex Object Storage.
  • ROLE — роль хоста (masternode, computenode или datanode).
  • CLUSTER_SERVICES — список компонентов.
  • MAX_WORKER_COUNT — максимальное количество хостов подкластеров для хранения и обработки данных.
  • MIN_WORKER_COUNT — минимальное количество хостов подкластеров для хранения и обработки данных.

Например, чтобы выполнить часть скрипта только на хосте-мастере (masternode), используйте проверку значения переменной окружения ROLE:

if [[ "${ROLE}" == "masternode" ]]; then
   ...
fi

Ошибки скриптов инициализацииОшибки скриптов инициализации

Если выполнение скрипта завершилось ошибкой и кластер перешел в состояние DEAD:

  1. Посмотрите логи в Yandex Cloud Logging или на хостах кластера в файле /var/log/yandex/dataproc-init-actions.log.
  2. Исправьте ошибку.
  3. Удалите этот кластер и создайте новый.

Если ошибки скриптов инициализации произошли на уже созданном кластере (например, во время добавления подкластера), а пересоздание кластера нарушает рабочие процессы, результат выполнения скрипта можно исправить вручную:

  1. Подключитесь к проблемному хосту и выполните действия, необходимые для компенсации ошибки.

  2. Запустите скрипт, который помечает успешным результат выполнения скриптов инициализации:

    sudo /opt/yandex/complete_init_action.py
    
  3. Проверьте результат выполнения скриптов инициализации в файле /home/dataproc-agent/dataproc-init-acts/states.json на хосте-мастере.

Ошибки синтаксисаОшибки синтаксиса

Чтобы проверить скрипт на наличие ошибок синтаксиса, загрузите файл скрипта вручную и запустите его:

  1. Подключитесь к хосту кластера.

  2. Загрузите файл скрипта из хранилища по ссылке, использованной при создании кластера. Например:

    wget <HTTP-ссылка_на_файл_скрипта>
    
  3. Запустите скрипт.

Если при выполнении скрипта возникли ошибки, сообщения о них отобразятся в консоли.

Одной из причин ошибок скриптов инициализации может быть несовместимость формата. Так как среда выполнения скрипта — Linux (Ubuntu), то скрипты, подготовленные в Windows, могут выполняться с одной из следующих ошибок:

  • ^M: bad interpreter;

  • FileNotFoundError: [Errno 2] No such file or directory: '<имя_исполняемого_файла>'.

Эти ошибки возникают из-за использования в Windows символа переноса строки CR/LF (в Linux – LF). Для исправления выполните команду:

Bash
PowerShell
sed -i -e 's/\r$//' <имя_файла_скрипта>
$file = "<имя_файла_скрипта>"; $text = [IO.File]::ReadAllText($file) -replace "`r`n", "`n"; [IO.File]::WriteAllText($file, $text)

Была ли статья полезна?

Предыдущая
Логи в Yandex Data Processing
Следующая
Управление доступом
Проект Яндекса
© 2025 ООО «Яндекс.Облако»