En este documento, se explica cómo migrar metadatos de un servicio de Dataproc Metastore a un extremo de catálogo de REST de Apache Iceberg o a un extremo de catálogo de Hive, compilado en Lakehouse sin bordes.
Casos de uso
- Modernización sin servidores: Realiza la transición de un Hive Metastore (HMS) convencional a un catálogo completamente administrado y con escalamiento automático, lo que elimina la sobrecarga operativa de la administración de metastore.
- Colaboración de varios motores: Habilita el uso compartido de datos entre motores, incluidos Apache Spark, Apache Flink, Apache Hive y BigQuery, para que los científicos y analistas de datos puedan trabajar en las mismas tablas de forma simultánea sin duplicar archivos.
- Integración directa en BigQuery: Consulta tablas de código abierto directamente desde BigQuery con una ejecución de alto rendimiento.
- Administración unificada: Consolida los metadatos en una única fuente de información para simplificar el descubrimiento de datos y la aplicación coherente de políticas.
- Formatos de tabla modernos: Adopta sin problemas formatos abiertos avanzados, como Apache Iceberg, y mantén la compatibilidad total con tus cargas de trabajo de Hive existentes.
Antes de comenzar
- Asegúrate de que exista un servicio de Dataproc Metastore activo como fuente de migración.
- Asegúrate de que el catálogo de Hive o el catálogo de Iceberg de destino existan y
incluyan los buckets o las rutas de Cloud Storage en los que residen los datos y los metadatos de la tabla de origen (por ejemplo, el bucket de almacén de Dataproc Metastore, como
gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4/hive-warehouse).Si el catálogo de destino no incluye la ubicación de los datos, la migración de la tabla falla porque el catálogo de destino no puede registrar las tablas. Para crear un catálogo de Iceberg, consulta Configura el extremo de catálogo de REST de Iceberg.
Para crear un catálogo de Hive, consulta Crea un catálogo de Hive de Lakehouse. - Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Verify that billing is enabled for your Google Cloud project.
Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Roles obligatorios
Para obtener los permisos que necesitas para activar la migración, pídele a tu administrador que te otorgue los siguientes roles de IAM en el servicio de Dataproc Metastore:
-
Inicia la migración:
Editor de Dataproc Metastore (
roles/metastore.editor) -
Crea catálogos de Hive o Iceberg:
Administrador de BigLake (
roles/biglake.admin) -
Migra metadatos a catálogos de destino con un proyecto de destino:
Administrador de BigLake (
roles/biglake.admin) en el agente de servicio de Dataproc Metastore (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com). -
Escribe informes de migración para el bucket de informes (si no usas el bucket de artefactos de servicio):
Administrador de objetos de Storage (
roles/storage.objectAdmin) en el agente de servicio de Dataproc Metastore (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Cómo funciona una migración
El proceso de migración funciona de la siguiente manera:
- Elige tu catálogo de destino: Selecciona el extremo de catálogo de Hive de destino o el extremo de catálogo de REST de Apache Iceberg para tu migración.
- Activa la migración: Ejecuta el
gcloud beta metastore services migrations startcomando o llama alstartMigrationmétodo en tu servicio de Dataproc Metastore para iniciar la migración. - Realiza un sondeo para obtener el estado: Supervisa el progreso de la migración con el
gcloud beta metastore services migrations describecomando o mediante el sondeo de la ejecución de destino. - Revisa los informes: Revisa los informes JSON detallados escritos en la ruta de Cloud Storage especificada para verificar los resultados.
Ejecuta una migración
Para ejecutar una migración, activa el proceso de migración y, luego, supervisa su progreso.
Inicia la migración
Para activar la migración de metadatos en un servicio de Dataproc Metastore, usa la CLI de gcloud o la API de REST.
gcloud
Para iniciar la migración con gcloud, ejecuta el gcloud beta metastore
services migrations
start
comando:
gcloud beta metastore services migrations start SERVICE_ID \
--location=REGION \
--hive-catalog="projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID" \
--hive-databases="HIVE_DB_1,HIVE_DB_2" \
--iceberg-catalog="projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID" \
--iceberg-namespaces="ICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2" \
--async
Reemplaza lo siguiente:
SERVICE_ID: Es el ID del servicio de Dataproc Metastore.REGION: Es la región del servicio de Dataproc Metastore.PROJECT_ID: Es tu Google Cloud ID del proyecto.HIVE_CATALOG_ID: Es el ID del catálogo de Hive de destino.HIVE_DB_1,HIVE_DB_2: Son las bases de datos de Hive que se migrarán.ICEBERG_CATALOG_ID: Es el ID del catálogo de Iceberg de destino.ICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2: Son los espacios de nombres de Iceberg que se migrarán.
REST
Para activar la migración de metadatos con la API de REST, llama al
startMigration
método con una
BigLakeMetastoreMigrationConfig
configuración:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"migrationExecution": {
"biglakeMetastoreMigrationConfig": {
"mode": "BACKFILL",
"dryRun": false,
"reportPath": "gs://BUCKET_NAME/PATH/",
"conflictPolicy": "SKIP",
"hiveConfig": {
"catalog": "projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID",
"databases": ["HIVE_DB_1", "HIVE_DB_2"]
},
"icebergConfig": {
"catalog": "projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID",
"namespaces": ["ICEBERG_NAMESPACE_1", "ICEBERG_NAMESPACE_2"]
}
}
}
}' \
"https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID:startMigration"
Reemplaza lo siguiente:
BUCKET_NAME: Es el nombre del bucket de Cloud Storage para los informes.PATH: Es la ruta de acceso en el bucket para los informes.PROJECT_ID: Es tu Google Cloud ID del proyecto.HIVE_CATALOG_ID: Es el ID del catálogo de Hive de destino.HIVE_DB_1,HIVE_DB_2: Son las bases de datos de Hive que se migrarán.ICEBERG_CATALOG_ID: Es el ID del catálogo de Iceberg de destino.ICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2: Son los espacios de nombres de Iceberg que se migrarán.REGION: Es la región del servicio de Dataproc Metastore.SERVICE_ID: Es el ID del servicio de Dataproc Metastore.
Realiza un sondeo de la ejecución de la migración
La solicitud inicia una operación de larga duración
(LRO) y muestra un ID de ejecución de migración único. Puedes supervisar el progreso de tu ejecución con la CLI de gcloud o la API de REST:
gcloud
Para describir la ejecución de la migración con gcloud, ejecuta el gcloud beta
metastore services migrations
describe
comando:
gcloud beta metastore services migrations describe MIGRATION_EXECUTION_ID \
--service=SERVICE_ID \
--location=REGION
Reemplaza lo siguiente:
MIGRATION_EXECUTION_ID: Es el ID de la ejecución de la migración que se muestra en el paso anterior.SERVICE_ID: Es el ID del servicio de Dataproc Metastore.REGION: Es la región del servicio de Dataproc Metastore.
REST
Para supervisar el progreso de tu ejecución con la API de REST, llama al
get
método en esa ruta de acceso de ejecución:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID/migrationExecutions/MIGRATION_EXECUTION_ID"
Reemplaza lo siguiente:
PROJECT_ID: Es tu Google Cloud ID del proyecto.REGION: Es la región del servicio de Dataproc Metastore.SERVICE_ID: Es el ID del servicio de Dataproc Metastore.MIGRATION_EXECUTION_ID: Es el ID de la ejecución de la migración que se muestra en el paso anterior.
Informe de migración detallado
Una vez que se completa la migración (reabastecimiento o ejecución de prueba), la herramienta de migración escribe
dos archivos de informe JSON detallados basados en el
MigrationReport
esquema en la ruta de Cloud Storage de destino especificada en reportPath:
summary.json: Contiene la estructura agregada de alto nivelMigrationSummary.full_report.json: Contiene un informe de migración detallado y más detallado. Para obtener más información, consultaCatalogReport.
Limitaciones
- El catálogo de destino debe incluir los buckets o las rutas de Cloud Storage en los que residen los datos y los metadatos de la tabla de origen (como el bucket de almacén de Dataproc Metastore). Si el catálogo de destino no está configurado con la ubicación del bucket de datos, el catálogo de destino no puede registrar las tablas y falla la migración de la tabla.
- La herramienta solo admite un relleno único. Los cambios de metadatos en tu Dataproc Metastore de origen después de la migración no se propagan automáticamente. Debes volver a ejecutar la migración para sincronizar el catálogo de destino con tu origen.
- La migración está sujeta a las limitaciones de los catálogos de destino. Si una tabla de Dataproc Metastore contiene una estructura de esquema o una propiedad no compatible con el catálogo de destino (como tipos complejos), falla la migración de esa tabla específica.
- Los permisos de Dataproc Metastore para tablas o bases de datos no se migran a Lakehouse.
¿Qué sigue?
- Obtén más información sobre el catálogo de entorno de ejecución de Lakehouse.
- Obtén información para configurar Spark y Hive con el Lakehouse catálogo de entorno de ejecución.
- Obtén información para consultar tablas de Iceberg con el entorno de ejecución de Lakehouse catálogo, Spark y BigQuery.