[Документация Yandex Cloud](../../../index.md) > [Yandex MetaData Hub](../../index.md) > Apache Hive™ Metastore > Пошаговые инструкции > Техническое обслуживание

# Техническое обслуживание кластера Apache Hive™ Metastore

Вы можете управлять [техническим обслуживанием](../../concepts/metastore-maintenance.md) кластера Apache Hive™ Metastore.


## Получить список обслуживаний {#list-maintenance}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в нужный каталог.
  1. [Перейдите](../../../console/operations/select-service.md#select-service) в сервис **Yandex MetaData Hub**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/database.svg) **Metastore-сервер**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../../_assets/console-icons/bars-play.svg) **Обслуживание**.

      Чтобы просмотреть обслуживания с определенным статусом, выберите статус в поле **Статус** над списком обслуживаний. Чтобы найти обслуживание, введите его идентификатор или имя задания в поле над списком обслуживаний.

{% endlist %}


## Получить логи технического обслуживания кластера {#maintenance-logs}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в нужный каталог.
  1. [Перейдите](../../../console/operations/select-service.md#select-service) в сервис **Yandex MetaData Hub**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/database.svg) **Metastore-сервер**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../../_assets/console-icons/bars-play.svg) **Обслуживание**.
  1. Выберите обслуживание. Откроется страница обслуживания.
  1. Нажмите ссылку **Логи задания**.

{% endlist %}


## Перенести запланированное обслуживание {#postpone-planned-maintenance}

Обслуживание в статусе **Запланировано** назначено на определенную дату и время, которые указаны в столбце **Дата начала**. При необходимости его можно перенести на новую дату и время.

Чтобы перенести обслуживание на новую дату и время:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в нужный каталог.
  1. [Перейдите](../../../console/operations/select-service.md#select-service) в сервис **Yandex MetaData Hub**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/database.svg) **Metastore-сервер**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../../_assets/console-icons/bars-play.svg) **Обслуживание**.
  1. В строке обслуживания со статусом **Запланировано** нажмите на значок ![image](../../../_assets/console-icons/ellipsis.svg) и выберите пункт ![image](../../../_assets/console-icons/arrow-uturn-cw-right.svg) **Перенести**.
  1. Выберите тип переноса запланированного обслуживания:
    
      * **На следующее окно** — перенос на следующее окно обслуживания.
      * **Выбрать дату (UTC)** — перенос на конкретную дату и время.

        Для этого переноса выберите дату и интервал времени по UTC.

        Обслуживание можно перенести не более чем на две недели от первоначально запланированной даты.

  1. Нажмите кнопку **Перенести**.

{% endlist %}


## Провести запланированное обслуживание немедленно {#exec-planned-maintenance}

Обслуживание со статусом **Запланировано** при необходимости можно провести немедленно, не дожидаясь момента, указанного в столбце **Дата начала**.

Чтобы провести запланированное обслуживание кластера немедленно:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в нужный каталог.
  1. [Перейдите](../../../console/operations/select-service.md#select-service) в сервис **Yandex MetaData Hub**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/database.svg) **Metastore-сервер**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../../_assets/console-icons/bars-play.svg) **Обслуживание**.
  1. В строке нужного обслуживания нажмите на значок ![image](../../../_assets/console-icons/ellipsis.svg) и выберите пункт ![image](../../../_assets/console-icons/triangle-right.svg) **Провести сейчас**.

{% endlist %}


## Настроить окно обслуживания {#set-maintenance-window}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в нужный каталог.
  1. [Перейдите](../../../console/operations/select-service.md#select-service) в сервис **Yandex MetaData Hub**.
  1. На панели слева выберите ![image](../../../_assets/console-icons/database.svg) **Metastore-сервер**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../../_assets/console-icons/bars-play.svg) **Обслуживание**.
  1. В правом верхнем углу страницы нажмите кнопку ![image](../../../_assets/console-icons/calendar.svg) **Настроить окно обслуживания**.
  1. Выберите время [технического обслуживания](../../concepts/metastore-maintenance.md) кластера:

      * Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт **В любое время** (по умолчанию).
      * Чтобы указать предпочтительное время начала обслуживания, выберите пункт **По расписанию** и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
      
      Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать установку обновлений и исправлений компонента Apache Hive™ Metastore, а также другие сервисные работы.

  1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы настроить [окно обслуживания](../../concepts/metastore-maintenance.md#maintenance-window):
    
  1. Посмотрите описание команды CLI для изменения настроек кластера:
    
      ```bash
      yc managed-metastore cluster update --help
      ```
  
  1. Настройте окно обслуживания:
    
      ```bash
      yc managed-metastore cluster update <имя_или_идентификатор_кластера> \
        --maintenance-window type=<тип_технического_обслуживания>,`
                            `day=<день_недели>,`
                            `hour=<порядковый_номер_часового_интервала>
      ```
    
      Где:
      
      * `<имя_или_идентификатор_кластера>` — имя или идентификатор кластера, которые можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters).
      * `--maintenance-window` — настройки времени [технического обслуживания](../../concepts/metastore-maintenance.md) (в т. ч. для выключенных кластеров), где `type` — тип технического обслуживания:

        * `anytime` (по умолчанию) — в любое время.
        * `weekly` — по расписанию. Для этого значения дополнительно укажите:
            * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.


- Terraform {#tf}

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

      Как создать такой файл, читайте в разделе [Создание кластера](cluster-create.md).

      Полный список доступных для изменения полей конфигурации кластера Apache Hive™ Metastore вы найдете в [документации провайдера Terraform](../../../terraform/resources/metastore_cluster.md).

  1. Чтобы настроить [окно обслуживания](../../concepts/metastore-maintenance.md#maintenance-window), добавьте к описанию кластера блок `maintenance_window`:
  
      ```hcl
      resource "yandex_metastore_cluster" "<локальное_имя_кластера>" {
        ...
        maintenance_window = {
          type = "<тип_технического_обслуживания>"
          day  = "<день_недели>"
          hour = <порядковый_номер_часового_интервала>
        }
        ...
      }
      ```

      Где:
      
      * `type` — тип технического обслуживания. Принимает значения:
      
        * `ANYTIME` — в любое время.
        * `WEEKLY` — по расписанию.
      
      * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
      * `hour` — порядковый номер часового интервала по UTC для типа `WEEKLY`: от `1` до `24`.
        
        > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

  1. Проверьте корректность настроек.

      1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
      1. Выполните команду:
      
         ```bash
         terraform validate
         ```
      
         Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Подтвердите изменение ресурсов.

      1. Выполните команду для просмотра планируемых изменений:
      
         ```bash
         terraform plan
         ```
      
         Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
      
      1. Если вас устраивают планируемые изменения, внесите их:
         1. Выполните команду:
      
            ```bash
            terraform apply
            ```
      
         1. Подтвердите изменение ресурсов.
         1. Дождитесь завершения операции.


- REST API {#api}
  
  1. [Получите IAM-токен для аутентификации в API](../../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```
  
  1. Воспользуйтесь методом [Cluster.Update](../../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):
  
      ```bash
      curl \
        --request PATCH \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://metastore.api.cloud.yandex.net/managed-metastore/v1/clusters/<идентификатор_кластера>' \
        --data '{
                 "updateMask": "maintenanceWindow",
                 "maintenanceWindow": {
                   "weeklyMaintenanceWindow": {
                     "day": "<день_недели>",
                     "hour": "<порядковый_номер_часового_интервала>"
                   }
                 }
               }'
      ```
    
      Где:
      
      * `<идентификатор_кластера>` — идентификатор кластера, который можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

      * `updateMask` — перечень изменяемых параметров в строку через запятую.

        В этом примере передается только один параметр `maintenanceWindow`.

        {% note warning %}
        
        Все настройки изменяемого объекта в кластере, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

        {% endnote %}

      * `maintenanceWindow` — настройки времени [технического обслуживания](../../concepts/metastore-maintenance.md) (в т. ч. для выключенных кластеров). В `maintenanceWindow` передайте один из двух параметров:
        
          * `anytime` — техническое обслуживание происходит в произвольное время.
          * `weeklyMaintenanceWindow` — техническое обслуживание происходит раз в неделю, в указанное время:
        
            * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
  
  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}
  
  1. [Получите IAM-токен для аутентификации в API](../../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

  1. Воспользуйтесь вызовом [ClusterService.Update](../../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):
  
      ```bash
      grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/metastore/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
             "cluster_id": "<идентификатор_кластера>",
             "update_mask": {
               "paths": [
                 "maintenance_window"
               ]
             },
             "maintenance_window": {
               "weekly_maintenance_window": {
                 "day": "<день_недели>",
                 "hour": "<порядковый_номер_часового_интервала>"
               }
             }
           }' \
        metastore.api.cloud.yandex.net:443 \
        yandex.cloud.metastore.v1.ClusterService.Update \
      ```
    
      Где:

      * `cluster_id` — идентификатор кластера, который можно получить со [списком кластеров в каталоге](cluster-list.md#list-clusters).
      * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

        {% cut "Формат перечисления настроек" %}

        ```yaml
        "update_mask": {
          "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
          ]
        }
        ```

        {% endcut %}

        В этом примере передается только один параметр `maintenance_window`.

        {% note warning %}

        Все настройки изменяемого объекта в кластере, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

        {% endnote %}

      * `maintenance_window` — настройки времени [технического обслуживания](../../concepts/metastore-maintenance.md) (в т. ч. для выключенных кластеров). В `maintenance_window` передайте один из двух параметров:
        
          * `anytime` — техническое обслуживание происходит в произвольное время.
          * `weekly_maintenance_window` — техническое обслуживание происходит раз в неделю, в указанное время:
        
            * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
            * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
        
              > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
  
  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation).

{% endlist %}

_Apache® и [Apache Hive™](https://hive.apache.org/) являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах._