[Yandex Cloud documentation](../../../index.md) > [Yandex MetaData Hub](../../index.md) > Apache Hive™ Metastore > Step-by-step guides > Creating a cluster

# Creating a Apache Hive™ Metastore cluster

To learn more about Apache Hive™ Metastore clusters in Yandex MetaData Hub, see [Apache Hive™ Metastore clusters](../../concepts/metastore.md).

## Getting started {#before-you-begin}

1. To link a [service account](../../../iam/concepts/users/service-accounts.md) to a Apache Hive™ Metastore cluster, [make sure](../../../iam/operations/roles/get-assigned-roles.md) your Yandex Cloud account has the [iam.serviceAccounts.user](../../../iam/security/index.md#iam-serviceAccounts-user) role or higher.
1. [Set up a NAT gateway](../../../vpc/operations/create-nat-gateway.md) in the subnet the cluster will connect to. It is needed for the cluster to interact with Yandex Cloud services.
1. [Configure the security group](configure-security-group.md).
1. [Create a service account](../../../iam/operations/sa/create.md).
1. [Assign the `managed-metastore.integrationProvider` role](../../../iam/operations/sa/assign-role-for-sa.md) to the service account. This role enables the cluster [to work with Yandex Cloud services](../../concepts/metastore-impersonation.md), e.g., Yandex Cloud Logging and Yandex Monitoring, under a service account.
   
    To use Object Storage, assign the additional `storage.editor` [role](../../../storage/security/index.md#storage-editor) to the cluster service account.

    You can also add more roles. Their combination depends on your specific use case. To view the service roles, see the [Apache Hive™ Metastore section](../../security/metastore-roles.md), and for all available roles, see this [reference](../../../iam/roles-reference.md).

1. If you want to save cluster logs to a custom log group, [create one](../../../logging/operations/create-group.md).

    For more information, see [Transferring cluster logs](logging.md).

## Creating a cluster {#create-cluster}

{% list tabs group=instructions %}

- Management console {#console}

    1. In the [management console](https://console.yandex.cloud), select the folder where you want to create a server.
    1. [Navigate](../../../console/operations/select-service.md#select-service) to **Yandex MetaData Hub**.
    1. In the left-hand panel, select ![image](../../../_assets/console-icons/database.svg) **Metastore**.
    1. Click **Create cluster**.
    1. Enter a name for the cluster. It must be unique within the folder.
    1. Optionally, enter a description for the cluster.
    1. Optionally, add [Yandex Cloud labels](../../../resource-manager/concepts/labels.md) to break resources into logical groups.
    1. Specify the service account you created earlier.
    1. Select the Apache Hive™ Metastore version.

        Available versions: 3.1, 4.0, and 4.2.
        
        {% note warning %}
        
        Before integrating an Apache Hive™ Metastore cluster with [Yandex Managed Service for Apache Spark™](../../../managed-spark/index.md), make sure their versions are compatible:
        
        * Apache Spark™ 3.5.7 supports Apache Hive™ Metastore 3.1.
        * Apache Spark™ 4.0.0 supports Apache Hive™ Metastore versions 3.1 and higher.
        
        If required, you can upgrade from Apache Hive™ Metastore 3.1 in this sequence: 3.1 → 4.0 → 4.2. However, you cannot downgrade 4.2 to 3.1.
        
        {% endnote %}

    1. Under **Hive Metastore data warehouse**, specify the bucket parameters for table data storage:

        * **Bucket name**: Name of the Object Storage bucket to store the Apache Hive™ Metastore (warehouse) data.
        * **Path in bucket**: Path within the bucket that will be used to prefix the Apache Hive™ Metastore data. This is an optional setting.

    1. Under **Network settings**, select the network and subnet to host the Apache Hive™ Metastore cluster. Specify the security group you configured previously.
    1. Under **Metastore**, select the [cluster configuration](../../concepts/metastore.md#presets).
    1. Optionally, configure logging settings:

        1. Enable **Write logs**.
        1. Select where to write cluster logs to:

            * Default log group: Select **Folder** in the **Destination** field and specify the folder. Logs will be stored in the selected folder's default log group.
            * Custom log group: Select **Log group** in the **Destination** field and specify the log group you created earlier.

        1. Select the minimum logging level.

            The execution log will contain logs of this level or higher. The available levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, and `FATAL`. The default is `INFO`.
    1. If required, enable protection of the cluster from accidental deletion by a user.

        Even with deletion protection enabled, one can still connect to the cluster manually and delete the data.

    1. Click **Create**.

- CLI {#cli}

  If you do not have the Yandex Cloud CLI yet, [install and initialize it](../../../cli/quickstart.md#install).

  The folder used by default is the one specified when [creating](../../../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

  To create a Apache Hive™ Metastore cluster:

  1. View the description of the CLI command for creating a cluster:
 
      ```bash
      yc managed-metastore cluster create --help
      ```

  1. Specify the cluster properties in the creation command:

      ```bash
      yc managed-metastore cluster create \
         --name <cluster_name> \
         --description <cluster_description> \
         --labels <label_list> \
         --service-account-id <service_account_ID> \
         --version <Apache_Hive™_Metastore_version> \
         --warehouse-bucket <bucket_name> \
         --warehouse-path <path_within_bucket> \
         --subnet-ids <subnet_IDs> \
         --security-group-ids <security_group_IDs> \
         --resource-preset-id <ID_of_computing_resources> \
         --maintenance-window type=<maintenance_type>,`
                              `day=<day_of_week>,`
                              `hour=<hour> \
         --deletion-protection \
         --log-enabled \
         --log-folder-id <folder_ID> \
         --log-min-level <logging_level>
      ```

      Where:

      * `--name`: Cluster name.

      * `--description`: Cluster description.
      * `--labels`: List of [labels](../../../resource-manager/concepts/labels.md). Provide labels in `<key>=<value>` format.
      * `--service-account-id`: [Service account](../../../iam/concepts/users/service-accounts.md) ID.
      * `--version`: Apache Hive™ Metastore version.
      
        Available versions: 3.1, 4.0, and 4.2.
        
        {% note warning %}
        
        Before integrating an Apache Hive™ Metastore cluster with [Yandex Managed Service for Apache Spark™](../../../managed-spark/index.md), make sure their versions are compatible:
        
        * Apache Spark™ 3.5.7 supports Apache Hive™ Metastore 3.1.
        * Apache Spark™ 4.0.0 supports Apache Hive™ Metastore versions 3.1 and higher.
        
        If required, you can upgrade from Apache Hive™ Metastore 3.1 in this sequence: 3.1 → 4.0 → 4.2. However, you cannot downgrade 4.2 to 3.1.
        
        {% endnote %}
      
      * `--warehouse-bucket`: Name of the Object Storage bucket to store the Apache Hive™ Metastore (warehouse) data.
      * `--warehouse-path`: Path within the bucket to prefix the Apache Hive™ Metastore data. This is an optional setting.

      * `--subnet-ids`: List of subnet IDs.

      * `--security-group-ids`: List of [security group](configure-security-group.md) IDs.
      * `--resource-preset-id`: [Computing resource configuration](../../concepts/metastore.md#presets).
      * `--maintenance-window`: Maintenance window settings (including for disabled clusters), where `type` is the maintenance type:
      
          * `anytime`: Any time (default).
          * `weekly`: On a schedule. For this value, also specify the following:
              * `day`: Day of week, i.e., `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, or `SUN`.
              * `hour`: Sequence number of UTC hour interval, from `1` to `24`.
          
                > For example, `1` stands for the interval from `00:00` to `01:00`, and `5`, from `04:00` to `05:00`.
      
      * `--deletion-protection`: Enables cluster protection against accidental deletion.
      * Logging parameters:
      
          * `--log-enabled`: Enables logging. Logs generated by Apache Hive™ Metastore components will be sent to Yandex Cloud Logging.
          * `--log-folder-id`: Folder ID. Logs will be written to the default [log group](../../../logging/concepts/log-group.md) for this folder.
          * `--log-group-id`: Custom log group ID. Logs will be written to this group.
      
            Specify one of the two parameters: `--log-folder-id` or `--log-group-id`.
      
          * `--log-min-level`: Minimum logging level. Possible values: `TRACE`, `DEBUG`, `INFO` (default), `WARN`, `ERROR`, and `FATAL`.


- Terraform {#tf}

    With [Terraform](https://www.terraform.io/), you can quickly create a cloud infrastructure in Yandex Cloud and manage it using configuration files. These files store the infrastructure description written in HashiCorp Configuration Language (HCL). If you change the configuration files, Terraform automatically detects which part of your configuration is already deployed, and what should be added or removed.
    
    Terraform is distributed under the [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE). The [Yandex Cloud provider for Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) is distributed under the [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) license.
    
    For more information about the provider resources, see the guides on the [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) website or [its mirror](../../../terraform/index.md).

    If you do not have Terraform yet, [install it and configure the Yandex Cloud provider](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
    
    
    To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), [authenticate](../../../terraform/authentication.md) using the appropriate method.

    To create a Apache Hive™ Metastore cluster:

    1. In the configuration file, describe the resources you are creating:

        * Apache Hive™ Metastore cluster: Cluster description.

        * Network: Description of the [cloud network](../../../vpc/concepts/network.md#network) where a cluster will be located. If you already have a suitable network, you don't have to describe it again.

        * Subnets: Description of the [subnets](../../../vpc/concepts/network.md#subnet) to connect the cluster hosts to. If you already have suitable subnets, you don't have to describe them again.

        Here is an example of the configuration file structure:

        ```hcl

        resource "yandex_metastore_cluster" "<cluster_name>" {
          name                = "<cluster_name>"
          subnet_ids          = [yandex_vpc_subnet.<subnet_name>.id]
          security_group_ids  = [<list_of_security_group_IDs>]
          service_account_id  = "<service_account_ID>"
          deletion_protection = <protect_cluster_from_deletion>
          version             = "<version>"

          cluster_config = {
            resource_preset_id = "<class_of_computing_resources>"
            warehouse_config = {
              s3 = {
                bucket = "<bucket_name>"
                path   = "<path_within_bucket>"
              }
            }
          }

          maintenance_window = {
            type = "<maintenance_type>"
            day  = "<day_of_week>"
            hour = <hour>
          }

          logging = {
            enabled   = <enable_logging>
            folder_id = "<folder_ID>"
            min_level = "<logging_level>"
          }
        }

        resource "yandex_vpc_network" "<network_name>" { name = "<network_name>" }

        resource "yandex_vpc_subnet" "<subnet_name>" {
          name           = "<subnet_name>"
          zone           = "<availability_zone>"
          network_id     = "<network_ID>"
          v4_cidr_blocks = ["<range>"]
        }
        ```

        Where:

        * `name`: Cluster name.
        * `subnet_ids`: List of subnet IDs.
        * `security_group_ids`: List of [security group](configure-security-group.md) IDs.
        * `service_account_id`: [Service account](../../../iam/concepts/users/service-accounts.md) ID.
        * `deletion_protection`: Enables cluster protection against accidental deletion. The possible values are `true` or `false`.
        * `version`: Apache Hive™ Metastore version.

            Available versions: 3.1, 4.0, and 4.2.
            
            {% note warning %}
            
            Before integrating an Apache Hive™ Metastore cluster with [Yandex Managed Service for Apache Spark™](../../../managed-spark/index.md), make sure their versions are compatible:
            
            * Apache Spark™ 3.5.7 supports Apache Hive™ Metastore 3.1.
            * Apache Spark™ 4.0.0 supports Apache Hive™ Metastore versions 3.1 and higher.
            
            If required, you can upgrade from Apache Hive™ Metastore 3.1 in this sequence: 3.1 → 4.0 → 4.2. However, you cannot downgrade 4.2 to 3.1.
            
            {% endnote %}

        * `cluster_config.resource_preset_id`: [Computing resource configuration](../../concepts/metastore.md#presets).
        * `cluster_config.warehouse_config.s3`: Apache Hive™ Metastore data warehouse parameters:
           * `bucket`: Object Storage bucket name.
           * `path`: Path within the bucket that will be used to prefix the Apache Hive™ Metastore data.
        * `maintenance_window`: Maintenance window settings, including those for disabled clusters. 
          
          * `type`: Maintenance type. The possible values include:
              * `ANYTIME`: Any time.
              * `WEEKLY`: On a schedule.
          * `day`: Day of week for the `WEEKLY` type, i.e., `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, or `SUN`.
          * `hour`: UTC hour for the `WEEKLY` type, from `1` to `24`.
        * `logging`: Logging parameters:

            * `enable`: Enables logging. Logs generated by Apache Hive™ Metastore components will be sent to Yandex Cloud Logging. The possible values are `true` or `false`.
            * `folder_id`: Folder ID. Logs will be written to the default [log group](../../../logging/concepts/log-group.md) for this folder.
            * `group_id`: Custom log group ID. Logs will be written to this group.

                Specify one of the two parameters: `folder_id` or `group_id`.

            * `min_level`: Minimum logging level. Possible values: `TRACE`, `DEBUG`, `INFO` (default), `WARN`, `ERROR`, and `FATAL`.

    1. Make sure the settings are correct.

        1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
        1. Run this command:
        
           ```bash
           terraform validate
           ```
        
           Terraform will show any errors found in your configuration files.

    1. Confirm resource changes.

        1. Run this command to view the planned changes:
        
           ```bash
           terraform plan
           ```
        
           If you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
        
        1. If everything looks correct, apply the changes:
           1. Run this command:
        
              ```bash
              terraform apply
              ```
        
           1. Confirm updating the resources.
           1. Wait for the operation to complete.

    For detailed information about the resources you can create with Terraform, see [this provider guide](../../../terraform/resources/metastore_cluster.md).


- REST API {#api}

    1. [Get an IAM token for API authentication](../../api-ref/authentication.md) and put it into an environment variable:

        ```bash
        export IAM_TOKEN="<IAM_token>"
        ```

    1. Create a file named `body.json` and paste the following code into it:

        ```json
        {
          "folderId": "<folder_ID>",
          "name": "<cluster_name>",
          "description": "<cluster_description>",
          "labels": { "<label_list>" },
          "deletionProtection": <deletion_protection>,
          "version": "<Apache_Hive™_Metastore_version>",
          "configSpec": {
            "resources": {
            "resourcePresetId": "<resource_configuration_ID>"
            },
            "warehouse": {
              "s3": {
                "bucket": "<bucket_name>",
                "path": "<path_within_bucket>"
              }
            }
          },
          "serviceAccountId": "<service_account_ID>",
          "logging": {
            "enabled": <use_of_logging>,
            "folderId": "<folder_ID>",
            "minLevel": "<logging_level>"
          },
          "network": {
            "subnetIds": [ "<list_of_subnet_IDs>" ],
            "securityGroupIds": [ "<list_of_security_group_IDs>" ]
          },
          "maintenanceWindow": {
            "weeklyMaintenanceWindow": {
            "day": "<day_of_week>",
            "hour": "<hour>"
            }
          }
        }
        ```
        Where:

        * `folderId`: Folder ID. You can get it with the [list of folders in the cloud](../../../resource-manager/operations/folder/get-id.md).

        * `name`: Cluster name.
        * `description`: Cluster description.
        * `labels`: List of labels provided in `"<key>": "<value>"` format.
        * `deletionProtection`: Enables cluster protection against accidental deletion. The possible values are `true` or `false`.
        * `version`: Apache Hive™ Metastore version.
        
          Available versions: 3.1, 4.0, and 4.2.
          
          {% note warning %}
          
          Before integrating an Apache Hive™ Metastore cluster with [Yandex Managed Service for Apache Spark™](../../../managed-spark/index.md), make sure their versions are compatible:
          
          * Apache Spark™ 3.5.7 supports Apache Hive™ Metastore 3.1.
          * Apache Spark™ 4.0.0 supports Apache Hive™ Metastore versions 3.1 and higher.
          
          If required, you can upgrade from Apache Hive™ Metastore 3.1 in this sequence: 3.1 → 4.0 → 4.2. However, you cannot downgrade 4.2 to 3.1.
          
          {% endnote %}
        
        * `configSpec.resources.resourcePresetId`: [Computing resource configuration](../../concepts/metastore.md#presets).
        * `configSpec.warehouse.s3`: Apache Hive™ Metastore data warehouse parameters:
        
          * `bucket`: Name of the Object Storage bucket to store the Apache Hive™ Metastore data (warehouse).
          * `path`: Path within the bucket that will be used to prefix the Apache Hive™ Metastore data. This is an optional setting.
        
        * `serviceAccountId`: [Service account](../../../iam/concepts/users/service-accounts.md) ID.
        * `logging`: Logging parameters:
        
          * `enabled`: Enables logging. Logs generated by Apache Hive™ Metastore components will be sent to Yandex Cloud Logging. The possible values are `true` or `false`.
          * `folderId`: Folder ID. Logs will be written to the default [log group](../../../logging/concepts/log-group.md) for this folder.
          * `logGroupId`: Custom log group ID. Logs will be written to this group.
        
              Specify either `folderId` or `logGroupId`.
        
          * `minLevel`: Minimum logging level. The possible values are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, and `FATAL`.

        * `network`: Network settings:
          * `subnetIds`: List of subnet IDs.
          * `securityGroupIds`: List of [security group](../../../vpc/concepts/network.md#security-groups) IDs.

        * `maintenanceWindow`: Maintenance window settings (including for disabled clusters). In `maintenanceWindow`, provide one of the two parameters:
          
            * `anytime`: Maintenance can take place at any time.
            * `weeklyMaintenanceWindow`: Maintenance takes place once a week at the specified time:
          
              * `day`: Day of week, in `DDD` format, `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, or `SUN`.
              * `hour`: Time of day (UTC) in `HH` format, from `1` to `24`.

    1. Call the [Cluster.Create](../../api-ref/Cluster/create.md) method, e.g., via the following [cURL](https://curl.se/) request:

        ```bash
        curl \
            --request POST \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --url 'https://metastore.api.cloud.yandex.net/managed-metastore/v1/clusters' \
            --data '@body.json'
        ```

    1. View the [server response](../../api-ref/Cluster/create.md#yandex.cloud.operation.Operation) to make sure your request was successful.

- gRPC API {#grpc-api}

    1. [Get an IAM token for API authentication](../../api-ref/authentication.md) and place it in an environment variable:

        ```bash
        export IAM_TOKEN="<IAM_token>"
        ```

    1. Clone the [cloudapi](https://github.com/yandex-cloud/cloudapi) repository:
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Below, we assume that the repository contents reside in the `~/cloudapi/` directory.

    1. Create a file named `body.json` and paste the following code into it:

        ```json
        {
          "folder_id": "<folder_ID>",
          "name": "<cluster_name>",
          "description": "<cluster_description>",
          "labels": "{ <label_list> }",
          "deletion_protection": <deletion_protection>,
          "version": "<Apache_Hive™_Metastore_version>",
          "config_spec": {
            "resources": {
              "resource_preset_id": "<resource_configuration_ID>"
            },
            "warehouse": {
              "s3": {
                "bucket": "<bucket_name>",
                "path": "<path_within_bucket>"
              }
            }
          },
          "service_account_id": "<service_account_ID>",
          "logging": {
            "enabled": <use_of_logging>,
            "folder_id": "<folder_ID>",
            "min_level": "<logging_level>"
          },
          "network": {
            "subnet_ids": [ "<list_of_subnet_IDs>" ],
            "security_group_ids": [ "<list_of_security_group_IDs>" ]
          },
          "maintenance_window": {
            "weekly_maintenance_window": {
              "day": "<day_of_week>",
              "hour": "<hour>"
            }
          }
        }
        ```

        Where:

        * `folder_id`: Folder ID. You can get it with the [list of folders in the cloud](../../../resource-manager/operations/folder/get-id.md).

        * `name`: Cluster name.
        * `description`: Cluster description.
        * `labels`: List of labels provided in `"<key>": "<value>"` format.
        * `deletion_protection`: Enables cluster protection against accidental deletion. The possible values are `true` or `false`.
        * `version`: Apache Hive™ Metastore version.
        
          Available versions: 3.1, 4.0, and 4.2.
          
          {% note warning %}
          
          Before integrating an Apache Hive™ Metastore cluster with [Yandex Managed Service for Apache Spark™](../../../managed-spark/index.md), make sure their versions are compatible:
          
          * Apache Spark™ 3.5.7 supports Apache Hive™ Metastore 3.1.
          * Apache Spark™ 4.0.0 supports Apache Hive™ Metastore versions 3.1 and higher.
          
          If required, you can upgrade from Apache Hive™ Metastore 3.1 in this sequence: 3.1 → 4.0 → 4.2. However, you cannot downgrade 4.2 to 3.1.
          
          {% endnote %}
        
        * `config_spec.resources.resource_preset_id`: [Computing resource configuration](../../concepts/metastore.md#presets).
        * `config_spec.warehouse.s3`: Apache Hive™ Metastore data warehouse parameters:
        
          * `bucket`: Name of the Object Storage bucket to store the Apache Hive™ Metastore data (warehouse).
          * `path`: Path within the bucket that will be used to prefix the Apache Hive™ Metastore data. This is an optional setting.
        
        * `service_account_id`: [Service account](../../../iam/concepts/users/service-accounts.md) ID.
        * `logging`: Logging parameters:
        
          * `enabled`: Enables logging. Logs generated by Apache Hive™ Metastore components will be sent to Yandex Cloud Logging. The possible values are `true` or `false`.
          * `folder_id`: Folder ID. Logs will be written to the default [log group](../../../logging/concepts/log-group.md) for this folder.
          * `log_group_id`: Custom log group ID. Logs will be written to this group.
        
              Specify one of the two parameters: `folder_id` or `log_group_id`.
        
          * `min_level`: Minimum logging level. The possible values are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, and `FATAL`.

        * `network`: Network settings:
            * `subnet_ids`: List of subnet IDs.
            * `security_group_ids`: List of [security group](../../../vpc/concepts/network.md#security-groups) IDs.

        * `maintenance_window`: Maintenance window settings (including for disabled clusters). In `maintenance_window`, provide one of the two parameters:
          
            * `anytime`: Maintenance can take place at any time.
            * `weekly_maintenance_window`: Maintenance takes place once a week at the specified time:
          
              * `day`: Day of week, in `DDD` format, `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, or `SUN`.
              * `hour`: Time of day (UTC) in `HH` format, from `1` to `24`.

    1. Call the [ClusterService.Create](../../api-ref/grpc/Cluster/create.md) method, e.g., via the following [gRPCurl](https://github.com/fullstorydev/grpcurl) request:

        ```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 @ \
            metastore.api.cloud.yandex.net:443 \
            yandex.cloud.metastore.v1.ClusterService.Create \
            < body.json
        ```

    1. Check the [server response](../../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation) to make sure your request was successful.

{% endlist %}

_Apache® and [Apache Hive™](https://hive.apache.org/) are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries._