Configura un servicio de Dataproc Metastore multirregional

En esta página, se muestra cómo configurar un servicio de Dataproc Metastore multirregional. Para obtener más información sobre cómo funcionan los servicios multirregionales de Dataproc Metastore, consulta Regiones de Dataproc Metastore.

Antes de comenzar

Roles obligatorios

Para obtener el permiso que necesitas para crear un servicio de Dataproc Metastore multirregional, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto, según el principio de privilegio mínimo:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso metastore.services.create, que se requiere para crear un servicio de Dataproc Metastore multirregional.

También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.

Para obtener más información sobre los roles y permisos específicos de Dataproc Metastore, consulta Administra el acceso con IAM.

Acerca de los servicios de Dataproc Metastore multirregionales

Los servicios multirregionales de Dataproc Metastore almacenan tus datos en dos regiones diferentes y usan esas dos regiones para ejecutar tus cargas de trabajo. Por ejemplo, la multirregión nam7 contiene las regiones us-central1 y us-east4.

  • Un servicio de Dataproc Metastore multirregional replica los metadatos en dos regiones y expone los extremos pertinentes para acceder a Hive Metastore. En el caso de gRPC, se expone un extremo por región. En el caso de Thrift, se expone un extremo por subred.

  • Un servicio de Dataproc Metastore multirregional proporciona una configuración de clúster de alta disponibilidad (HA) activa/activa. Esta configuración significa que las cargas de trabajo pueden acceder a cualquiera de las regiones cuando ejecutan trabajos. También proporciona un mecanismo de conmutación por error para tu servicio. Por ejemplo, si tu extremo regional principal deja de funcionar, tus cargas de trabajo se enrutan automáticamente a la región secundaria. Esto ayuda a evitar interrupciones en tus trabajos de Dataproc.

Consideraciones

Las siguientes consideraciones se aplican a los servicios de Dataproc Metastore multirregionales.

Crea un servicio de Dataproc Metastore multirregional

Elige una de las siguientes pestañas para aprender a crear un servicio multirregional con el protocolo de extremo Thrift o gRPC, con un servicio de Dataproc Metastore 2.

gRPC

Cuando creas un servicio multirregional que usa el protocolo de extremo gRPC, no tienes que configurar ningún parámetro de red específico. El protocolo de gRPC controla el enrutamiento de red por ti.

Console

  1. En la Google Cloud consola, ve a la página Dataproc Metastore.

    Ir a Dataproc Metastore

  2. En la barra de navegación, haz clic en + Crear.

    Se abrirá el diálogo Crear servicio de Metastore.

  3. Selecciona Dataproc Metastore 2.

  4. En la sección Precios y capacidad, selecciona Enterprise Plus - Dual region.

  5. En Protocolo de extremo, selecciona gRPC.

  6. Haz clic en Enviar para crear y, luego, iniciar el servicio.

    Tu nuevo servicio de metastore aparecerá en la página Dataproc Metastore. El estado muestra Creando hasta que el servicio esté listo para usarse. Cuando esté lista, el estado cambiará a Activa. El aprovisionamiento del servicio puede tardar unos minutos.

gcloud CLI

Para crear un servicio multirregional de Dataproc Metastore, ejecuta el siguiente comando gcloud metastore services create. Este comando crea la versión 3.1.2 de Dataproc Metastore.

gcloud metastore services create SERVICE \
  --location=MULTI_REGION \
{ --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \
  --endpoint-protocol=grpc

Reemplaza lo siguiente:

  • SERVICE: Es el nombre de tu servicio de Dataproc Metastore.
  • MULTI_REGION: Es la región múltiple en la que crearás tu servicio de Dataproc Metastore.
  • INSTANCE_SIZE: Es el tamaño de la instancia de tu Dataproc Metastore multirregional. Por ejemplo, small, medium o large. Si especificas un valor para INSTANCE_SIZE, no especifiques un valor para SCALING_FACTOR.
  • SCALING_FACTOR: Es el factor de ajuste de tu servicio de Dataproc Metastore. Por ejemplo, 0.1. Si especificas un valor para SCALING_FACTOR, no especifiques un valor para INSTANCE_SIZE.

Thrift

Cuando creas un servicio multirregional que usa el protocolo de extremo de Thrift, debes establecer la configuración de subred adecuada. En este caso, para cada red de VPC que uses, debes proporcionar al menos una subred de cada región.

Por ejemplo, para crear la multirregión nam7, debes proporcionar las regiones us-central1 y us-east4.

Console

  1. En la Google Cloud consola, ve a la página Dataproc Metastore.

    Ir a Dataproc Metastore

  2. En la barra de navegación, haz clic en + Crear.

    Se abrirá el diálogo Crear servicio de Metastore.

  3. Selecciona Dataproc Metastore 2.

  4. En la sección Precios y capacidad, selecciona Enterprise Plus - Birregional.

    Para obtener más información, consulta los planes de precios y las configuraciones de escalamiento.

  5. En el campo Nombre del servicio, ingresa un nombre único para tu servicio.

    Para obtener información sobre las convenciones de nomenclatura, consulta Convención de nombres de recursos.

  6. En Protocolo de extremo, selecciona Thrift.

  7. En Configuración de red, proporciona las subredes que forman la configuración multirregional que elegiste.

  8. Para las demás opciones de configuración del servicio, usa los valores predeterminados proporcionados.

  9. Haz clic en Enviar para crear y, luego, iniciar el servicio.

    Tu nuevo servicio de metastore aparecerá en la página Dataproc Metastore. El estado muestra Creando hasta que el servicio esté listo para usarse. Cuando esté lista, el estado cambiará a Activa. El aprovisionamiento del servicio puede tardar unos minutos.

gcloud CLI

Para crear un servicio multirregional de Dataproc Metastore, ejecuta el siguiente comando de gcloud metastore services create. Este comando crea la versión 3.1.2 de Dataproc Metastore.

gcloud metastore services create SERVICE \
  --location=MULTI_REGION \
  --consumer-subnetworks="projects/PROJECT_ID/regions/LOCATION1/subnetworks/SUBNET1,projects/PROJECT_ID/regions/LOCATION2/subnetworks/SUBNET2" \
{ --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \
  --endpoint-protocol=thrift

También puedes almacenar la configuración de red en un archivo, como se muestra en el siguiente comando.

gcloud metastore services create SERVICE \
  --location=MULTI_REGION \
  --network-config-from-file=NETWORK_CONFIG_FROM_FILE
{ --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \
  --endpoint-protocol=thrift

Reemplaza lo siguiente:

  • SERVICE: Es el nombre de tu servicio de Dataproc Metastore.
  • MULTI_REGION: Es la región múltiple en la que crearás tu servicio de Dataproc Metastore.
  • PROJECT_ID: Es el ID del proyecto Google Cloud en el que crearás tu servicio de Dataproc Metastore.
  • SUBNET1,SUBNET2: Es una lista de subredes que forman una configuración multirregional. Puedes usar el ID, la URL completamente calificada o el nombre relativo de la subred. Puedes especificar hasta seis subredes.
  • LOCATION1,LOCATION2: Una lista de ubicaciones que forman una configuración multirregional. Puedes usar el ID de la ubicación. Por ejemplo, para una multirregión nam7, usas us-central1 y us-east4.
  • NETWORK_CONFIG_FROM_FILE: Es la ruta de acceso a un archivo YAML que contiene tu configuración de red.
  • INSTANCE_SIZE: Es el tamaño de la instancia de tu Dataproc Metastore multirregional. Por ejemplo, small, medium o large. Si especificas un valor para INSTANCE_SIZE, no especifiques un valor para SCALING_FACTOR.
  • SCALING_FACTOR: Es el factor de ajuste de tu servicio de Dataproc Metastore. Por ejemplo, 0.1. Si especificas un valor para SCALING_FACTOR, no especifiques un valor para INSTANCE_SIZE.

REST

Para aprender a crear un servicio de Dataproc Metastore multirregional, sigue las instrucciones para crear un servicio con el Explorador de APIs de Google.

Para configurar un servicio multirregional, proporciona la siguiente información en los objetos Network Config.

  "network_config": {
    "consumers": [
        {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET1"},
        {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET2"}
    ],
    "scaling_config": {
    "scaling_factor": SCALING_FACTOR
    }
  }

Reemplaza lo siguiente:

  • PROJECT_ID: Es el Google Cloud ID del proyecto que contiene tu servicio de Dataproc Metastore.
  • LOCATION: Es la Google Cloud región en la que reside tu servicio de Dataproc Metastore.
  • SUBNET1,SUBNET2: Es una lista de subredes que forman una configuración multirregional. Puedes usar el ID, la URL completamente calificada o el nombre relativo de la subred. Puedes especificar hasta cinco subredes.
  • SCALING_FACTOR: Es el factor de escala que deseas usar para el servicio.

Conecta Dataproc Metastore a un clúster de Dataproc

Elige una de las siguientes pestañas para aprender a conectar un servicio de Dataproc Metastore multirregional desde un clúster de Dataproc.

gRPC

Para conectar un clúster de Dataproc, elige la pestaña que corresponda a la versión de Dataproc Metastore que usas.

Dataproc Metastore 3.1.2

  1. Crea las siguientes variables para tu clúster de Dataproc:

    CLUSTER_NAME=CLUSTER_NAME
    PROJECT_ID=PROJECT_ID
    MULTI_REGION=MULTI_REGION
    DATAPROC_IMAGE_VERSION=DATAPROC_IMAGE_VERSION
    PROJECT=PROJECT
    SERVICE_ID=SERVICE_ID

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre de tu clúster de Dataproc.
    • PROJECT_ID: Es el Google Cloud proyecto que contiene tu clúster de Dataproc. Asegúrate de que la subred que usas tenga los permisos adecuados para acceder a este proyecto.
    • MULTI_REGION: Es la Google Cloud región múltiple en la que deseas crear tu clúster de Dataproc.
    • DATAPROC_IMAGE_VERSION: Es la versión de la imagen de Dataproc que usas con tu servicio de Dataproc Metastore. Debes usar una versión de imagen de 2.0 o superior.
    • PROJECT: Es el proyecto que contiene tu servicio de Dataproc Metastore.
    • SERVICE_ID: Es el ID del servicio de tu servicio de Dataproc Metastore.
  2. Para crear tu clúster, ejecuta el siguiente comando gcloud dataproc clusters create. --enable-kerberos es opcional. Incluye esta opción solo si usas Kerberos con tu clúster.

    gcloud dataproc clusters create ${CLUSTER_NAME} \
     --project ${PROJECT_ID} \
     --region ${MULTI_REGION} \
     --image-version ${DATAPROC_IMAGE_VERSION} \
     --scopes "https://www.googleapis.com/auth/cloud-platform" \
     --dataproc-metastore projects/${PROJECT}/locations/${MULTI_REGION}/services/${SERVICE_ID} \
    [ --enable-kerberos ]

Dataproc Metastore 2.3.6

  1. Crea las siguientes variables para tu servicio de Dataproc Metastore:

    METASTORE_PROJECT=METASTORE_PROJECT
    METASTORE_ID=METASTORE_ID
    MULTI_REGION=MULTI_REGION
    SUBNET=SUBNET

    Reemplaza lo siguiente:

    • METASTORE_PROJECT: El proyecto Google Cloud que contiene tu servicio de Dataproc Metastore.
    • METASTORE_ID: Es el ID del servicio de tu servicio de Dataproc Metastore.
    • MULTI_REGION: Es la ubicación multirregional que deseas usar para tu servicio de Dataproc Metastore.
    • SUBNET: Es una de las subredes que usas para tu servicio de Dataproc Metastore. O cualquier subred de la red de VPC principal de las subredes que se usan para tu servicio.
  2. Crea las siguientes variables para tu clúster de Dataproc:

    CLUSTER_NAME=CLUSTER_NAME
    DATAPROC_PROJECT=DATAPROC_PROJECT
    DATAPROC_REGION=DATAPROC_REGION
    HIVE_VERSION=HIVE_VERSION
    IMAGE_VERSION=r>IMAGE_VERSION

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre de tu clúster de Dataproc.
    • DATAPROC_PROJECT: Es el Google Cloud proyecto que contiene tu clúster de Dataproc. Asegúrate de que la subred que usas tenga los permisos adecuados para acceder a este proyecto.
    • DATAPROC_REGION: Es la Google Cloud región en la que deseas crear tu clúster de Dataproc.
    • HIVE_VERSION: Es la versión de Hive que usa tu servicio de Dataproc Metastore.
    • IMAGE_VERSION: Es la versión de la imagen de Dataproc que usas con tu servicio de Dataproc Metastore.
      • Para la versión 2.0 de Hive Metastore, usa la versión de imagen 1.5.
      • Para la versión 3.1.2 de Hive Metastore, usa la versión de imagen 2.0.
  3. Recupera el directorio de almacén de tu servicio de Dataproc Metastore y almacénalo en una variable.

    WAREHOUSE_DIR=$(gcloud metastore services describe "${METASTORE_ID}" --project "${METASTORE_PROJECT}" --location "${MULTI_REGION}" --format="get(hiveMetastoreConfig.configOverrides[hive.metastore.warehouse.dir])")
  4. Crea un clúster de Dataproc configurado con un Dataproc Metastore multirregional.

    gcloud dataproc clusters create ${CLUSTER_NAME} \
        --project "${DATAPROC_PROJECT}" \
        --region ${DATAPROC_REGION} \
        --scopes "https://www.googleapis.com/auth/cloud-platform" \
        --subnet "${SUBNET}" \
        --optional-components=DOCKER \
        --image-version ${IMAGE_VERSION} \
        --metadata "hive-version=${HIVE_VERSION},dpms-name=${DPMS_NAME}" \
        --properties "hive:hive.metastore.uris=thrift://localhost:9083,hive:hive.metastore.warehouse.dir=${WAREHOUSE_DIR}" \
        --initialization-actions gs://metastore-init-actions/mr-metastore-grpc-proxy/metastore-grpc-proxy.sh

Thrift

Opción 1: Edita el archivo hive-site.xml

  1. Busca el URI de extremo y el directorio de almacén de tu servicio de Dataproc Metastore. Puedes elegir cualquiera de los extremos expuestos.
  2. En la Google Cloud consola, ve a la página Instancias de VM.
  3. En la lista de instancias de máquina virtual, haz clic en SSH en la fila del nodo principal de Dataproc (.*-m).

    Se abrirá una ventana del navegador en tu directorio principal del nodo.

  4. Abre el archivo /etc/hive/conf/hive-site.xml.

    sudo vim /etc/hive/conf/hive-site.xml
    

    Verás un resultado similar al siguiente:

    <property>
        <name>hive.metastore.uris</name>
        <value>ENDPOINT_URI</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>WAREHOUSE_DIR</value>
    </property>
    

    Reemplaza lo siguiente:

  5. Reinicia HiveServer2:

    sudo systemctl restart hive-server2.service
    

Opción 2: Usa gcloud CLI

Ejecuta el siguiente comando de gcloud CLI gcloud dataproc clusters create.

  1. Busca el URI de extremo y el directorio de almacén de tu servicio de Dataproc Metastore. Puedes elegir cualquiera de los extremos expuestos.
gcloud dataproc clusters create CLUSTER_NAME \
    --network NETWORK \
    --project PROJECT_ID \
    --scopes "https://www.googleapis.com/auth/cloud-platform" \
    --image-version IMAGE_VERSION \
    --properties "hive:hive.metastore.uris=ENDPOINT,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR"

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre de tu clúster de Dataproc.
  • NETWORK: Es el Google Cloud proyecto que contiene tu clúster de Dataproc. Asegúrate de que la subred que usas tenga los permisos adecuados para acceder a este proyecto.
  • PROJECT_ID: Es la versión de Hive que usa tu servicio de Dataproc Metastore.
  • IMAGE_VERSION: Es la versión de la imagen de Dataproc que usas con tu servicio de Dataproc Metastore.
    • Para la versión 2.0 de Hive Metastore, usa la versión de imagen 1.5.
    • Para la versión 3.1.2 de Hive Metastore, usa la versión de imagen 2.0.
  • ENDPOINT: Es el extremo de Thrift que usa tu Dataproc Metastore.
  • WAREHOUSE_DIR: Es el directorio del almacén de tu Dataproc Metastore.

Configuraciones de regiones personalizadas

Puedes configurar los servicios de Dataproc Metastore para que usen una configuración de región personalizada.

Una configuración de región personalizada permite que tu servicio ejecute cargas de trabajo desde dos regiones separadas. Esto proporciona redundancia en todas las regiones, lo que significa que las cargas de trabajo pueden acceder a cualquiera de las regiones cuando ejecutan trabajos. También proporciona un mecanismo de conmutación por error para tu servicio. Por ejemplo, si uno de los extremos regionales deja de estar disponible, tus cargas de trabajo se enrutan automáticamente a la otra región. Esto ayuda a evitar interrupciones en tus cargas de trabajo y tareas.

Las configuraciones de regiones personalizadas también te permiten controlar dónde almacenas los metadatos y dónde expones tus extremos de Hive Metastore. Esto puede mejorar el rendimiento cuando se procesan cargas de trabajo.

Consideraciones

Las siguientes consideraciones se aplican a los servicios de Dataproc Metastore configurados con una configuración de región personalizada:

  • Restricciones de región o vinculación: No se permiten todas las regiones ni combinaciones.
  • Limitaciones de solo lectura: Las regiones de solo lectura no pueden aceptar operaciones de escritura. Si se elige una región de solo lectura y no se puede acceder a la región de lectura y escritura, no se podrá procesar la escritura.
  • Inmutabilidad de la configuración: Una vez establecida, la configuración de la región no se puede cambiar.
  • Solo para la pila de EE.UU.: Las regiones duales personalizadas solo admiten la pila US y se limitan al límite de EE.UU.

Crea un servicio de región personalizado

Para configurar una región personalizada, elige dos regiones adyacentes cuando crees tu servicio. Esta combinación puede ser de dos regiones de lectura y escritura, o bien una región de lectura y escritura y una de solo lectura.

Console

  1. En la Google Cloud consola, ve a la página Dataproc Metastore.

    Ir a Dataproc Metastore

  2. En la barra de navegación, haz clic en + Crear.

    Se abrirá el diálogo Crear servicio de Metastore.

  3. Selecciona Dataproc Metastore 2.

  4. En la sección Precios y capacidad, selecciona Enterprise Plus - Birregional.

  5. En el campo Nombre del servicio, ingresa un nombre único para tu servicio.

  6. En Ubicación de los datos, selecciona US (continent).

    Aparecerá la sección Regiones personalizadas.

  7. En Regiones personalizadas, selecciona una región de lectura y escritura y una región de solo lectura.

  8. Para las demás opciones de configuración del servicio, usa los valores predeterminados proporcionados.

  9. Haz clic en Enviar para crear y, luego, iniciar el servicio.

    Tu nuevo servicio de metastore aparecerá en la página Dataproc Metastore. El estado muestra Creando hasta que el servicio esté listo para usarse. Cuando esté lista, el estado cambiará a Activa. El aprovisionamiento del servicio puede tardar unos minutos.

gcloud

Para crear un servicio de Dataproc Metastore con regiones personalizadas, ejecuta el siguiente comando de gcloud CLI gcloud beta metastore services create.

gcloud beta metastore services create SERVICE \
  --read-write-regions

Reemplaza lo siguiente:

  • SERVICE: Es el nombre de tu servicio de Dataproc Metastore.
  • READ_WRITE_REGIONS: Es una región de lectura y escritura compatible que forma parte de la configuración de tu región personalizada.
  • READ_ONLY_REGIONS: Es una región de solo lectura compatible que forma parte de la configuración de tu región personalizada.

Qué sigue