Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex MetaData Hub
  • О сервисе Yandex MetaData Hub
    • Начало работы
    • Сервисные роли для управления доступом
    • Решение проблем
    • Справочник Terraform
    • Аудитные логи Audit Trails
  • Управление доступом
  • Квоты и лимиты
  • Правила тарификации
  • Публичные материалы
  • История изменений

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

  • Ошибка при создании базы данных в Apache Hive™ Metastore
  • Отсутствие прав при подключении сервисного аккаунта к кластеру
  • Блокировка таблиц Hive
  • Снятие блокировки с помощью python-скрипта
  1. Apache Hive™ Metastore
  2. Решение проблем

Решение проблем в Apache Hive™ Metastore

Статья создана
Yandex Cloud
Обновлена 1 апреля 2026 г.
  • Ошибка при создании базы данных в Apache Hive™ Metastore
  • Отсутствие прав при подключении сервисного аккаунта к кластеру
  • Блокировка таблиц Hive
    • Снятие блокировки с помощью python-скрипта

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

  • Ошибка при создании базы данных
  • Отсутствие прав при подключении сервисного аккаунта к кластеру
  • Блокировка таблиц Hive

Ошибка при создании базы данных в Apache Hive™ MetastoreОшибка при создании базы данных в Apache Hive™ Metastore

Ошибка возникает, если создавать БД с помощью следующего запроса:

CREATE DATABASE IF NOT EXISTS <имя_БД>;

Решение
Apache Hive™ Metastore не позволяет создать базу данных или таблицу в Hive — они хранятся в бакете Yandex Object Storage, который привязан к кластеру Yandex Data Processing. Чтобы создать БД, выполните запрос:

CREATE DATABASE IF NOT EXISTS <имя_БД> LOCATION <местоположение_БД>;

В параметре LOCATION укажите путь до бакета и базы данных в нем в формате: s3a://<имя_бакета>/<имя_папки>/<имя_БД>. Указывать папку необязательно, но в нее объекты загружаются быстрее, чем в корень бакета.

Отсутствие прав при подключении сервисного аккаунта к кластеруОтсутствие прав при подключении сервисного аккаунта к кластеру

Текст ошибки:

ERROR: rpc error: code = PermissionDenied desc = you do not have permission to access the requested service account or service account does not exist

Ошибка возникает, если вы создаете или изменяете кластер и привязываете к нему сервисный аккаунт.

Решение
Назначьте вашему аккаунту в Yandex Cloud роль iam.serviceAccounts.user или выше.

Apache® и Apache Hive™ являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах.

Блокировка таблиц HiveБлокировка таблиц Hive

При работе с Apache Hive™ Metastore может произойти блокировка таблицы Hive, например, если прервать работу скрипта.

Для снятия блокировки можно использовать:

  • thrift-интерфейс Hive Metastore;
  • python-скрипт, который запускается в той же виртуальной частной сети (VPC), что и Apache Hive™ Metastore.

Снятие блокировки с помощью python-скриптаСнятие блокировки с помощью python-скрипта

Важно

Apache Hive™ Metastore доступен только по внутреннему IP-адресу в виртуальной частной сети (VPC) и не имеет публичного DNS-имени. Это обеспечивает дополнительную безопасность, но требует, чтобы все сервисы, подключающиеся к Apache Hive™ Metastore, находились в той же VPC или имели настроенный сетевой доступ.

Чтобы снять блокировку:

  1. Подключитесь к виртуальной машине или сервису, который находится в той же VPC, что и Apache Hive™ Metastore.

  2. Установите зависимости:

    pip install click
    pip install hive-metastore-client
    
  3. Создайте файл с именем unlock.py и скопируйте в него скрипт:

    unlock.py
    import click
    
    from hive_metastore_client import HiveMetastoreClient
    from thrift_files.libraries.thrift_hive_metastore_client.ttypes import ShowLocksRequest, UnlockRequest
    
    
    class MetastoreClient:
        def __init__(self, metastore_hostname, metastore_port):
            self.metastore_hostname = metastore_hostname
            self.metastore_port = metastore_port
            self.metastore_client = HiveMetastoreClient(metastore_hostname, metastore_port)
    
        def show_locks(self, db_name, table):
            with self.metastore_client as metastore_client:
                req = ShowLocksRequest(dbname=db_name, tablename=table)
                return metastore_client.show_locks(req)
    
        def unlock(self, lock_id):
            with self.metastore_client as metastore_client:
                req = UnlockRequest(lockid=lock_id)
                return metastore_client.unlock(req)
    
    
    @click.group()
    @click.option(
        "--host",
        required=True,
        help="Metastore host",
    )
    @click.option(
        "--port",
        type=int,
        help="Metastore port",
        default=9083,
    )
    @click.pass_context
    def cli(ctx, host: str, port: int):
        """Hive Metastore CLI."""
        ctx.obj = MetastoreClient(host, port)
    
    
    @cli.command("show-locks")
    @click.argument("db_name", required=True)
    @click.argument("table", required=True)
    @click.pass_obj
    def show_locks(client: MetastoreClient, db_name, table):
        """Show locks for table."""
        result = client.show_locks(db_name, table)
        click.echo(result)
    
    
    @cli.command("unlock")
    @click.argument("lock_id", required=True, type=int)
    @click.pass_obj
    def unlock(client: MetastoreClient, lock_id):
        """Unlock by lock id."""
        result = client.unlock(lock_id)
        click.echo(result)
    
    
    if __name__ == "__main__":
        cli()
    
  4. Чтобы посмотреть список блокировок, запустите скрипт:

    python unlock.py --host <metastore-host> show-locks <db-name> <table-name>
    

    Где:

    • <metastore-host> — внутренний IP-адрес Apache Hive™ Metastore.

      Чтобы узнать IP-адрес:

      1. Перейдите на страницу каталога ресурсов.
      2. Перейдите в сервис Yandex MetaData Hub.
      3. На панели слева выберите Metastore-сервер.
    • <db-name> — имя базы данных.

    • <table-name> — имя таблицы.

  5. Чтобы снять блокировку, запустите скрипт:

    python unlock.py --host <metastore-host> unlock <lock-id>
    

    Где:

    • <metastore-host> — внутренний IP-адрес Apache Hive™ Metastore.
    • <lock-id> — идентификатор блокировки.

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

Предыдущая
Сервисные роли для управления доступом
Следующая
Overview
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»