Puedes migrar metadatos de un servicio de Dataproc Metastore a un endpoint de catálogo de REST de Apache Iceberg o a un endpoint de catálogo de Hive, creado en Lakehouse sin límites. Esta migración te ayuda a modernizarte a formatos de tablas abiertos y unificar el acceso al catálogo en varios motores de análisis.
Casos de uso
- Modernización sin servidores: Transición de un Hive Metastore (HMS) convencional a un catálogo administrado con escalamiento automático, lo que ayuda a eliminar la sobrecarga de administración del almacén de metadatos.
- Colaboración con varios motores: Comparte datos entre motores, incluidos Apache Spark, Apache Flink, Apache Hive y BigQuery, para que los científicos de datos y analistas 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.
- Administración unificada: Consolida los metadatos en una única fuente de información para el descubrimiento de datos y la aplicación coherente de políticas.
- Formatos de tabla modernos: Adopta formatos abiertos, como Apache Iceberg, mientras mantienes la compatibilidad 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 Iceberg de destino exista y
de que incluya los buckets o las rutas de acceso de Cloud Storage en los que residen los datos y 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 del 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 cuenta de Google Cloud . 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, Dataproc Metastore APIs, if any are not already enabled.
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, Dataproc Metastore APIs, if any are not already enabled.
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). -
Escribir informes de migración para el bucket de informes (si no se usa el bucket de artefactos de servicio):
Administrador de objetos de almacenamiento (
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 a través de 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 del catálogo de Hive de destino o el extremo del catálogo de REST de Apache Iceberg para la migración.
- Activa la migración: Ejecuta el comando
gcloud metastore services migrations starto llama al métodostartMigrationen tu servicio de Dataproc Metastore para iniciar la migración. - Sondea el estado: Supervisa el progreso de la migración con el comando
gcloud metastore services migrations describeo sondeando la ejecución de destino. - Revisa los informes: Revisa los informes detallados en formato JSON que se escribieron en la ruta de acceso de Cloud Storage que especificaste 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 consola de Google Cloud , la CLI de gcloud o la API de REST.
Console
En la consola de Google Cloud , ve a la página Dataproc Metastore.
En la lista de servicios de metastore, haz clic en el nombre del servicio que deseas migrar.
En la página de detalles del servicio, haz clic en Migrar a Lakehouse en la barra de navegación superior.
En Nombre de la migración, ingresa un nombre visible para la migración.
En Tipo de migración, selecciona Migración de reabastecimiento para realizar la migración o Ejecución de prueba para validar la migración sin escribir metadatos en el catálogo de destino.
Establece la configuración del destino:
- Informes: (Opcional) Selecciona la ruta de acceso de Cloud Storage para guardar el informe de estado de la migración. Si no se especifica, el informe se genera en el bucket de artefactos de tu servicio de Dataproc Metastore.
- Manejo de conflictos: Selecciona si deseas omitir o reemplazar las entradas duplicadas de la base de datos.
En Destino, selecciona los tipos de catálogo a los que deseas migrar, Extremo del catálogo de REST de Iceberg o Metastore de Hive. Puedes migrar a un catálogo o a ambos al mismo tiempo, según el tipo de tablas que necesites migrar desde tu base de datos de origen.
Si migras al catálogo de REST de Iceberg, haz lo siguiente:
- En Proyecto, selecciona el proyecto que contiene el catálogo al que deseas migrar.
- En Catálogo de REST de Iceberg, selecciona el catálogo al que deseas migrar o haz clic en Crear catálogo para crear uno nuevo.
Si migras al catálogo de Hive, haz lo siguiente:
- En Proyecto, selecciona el proyecto que contiene el catálogo al que deseas migrar.
- En Catálogo de Hive, selecciona el catálogo al que deseas migrar o haz clic en Crear catálogo para crear uno nuevo.
Haz clic en Iniciar migración.
Se te redireccionará automáticamente a la pestaña Migraciones. En Migraciones administradas, se muestra tu migración y el estado se sigue actualizando hasta que finaliza la migración.
gcloud
Para iniciar la migración con gcloud, ejecuta el comando
gcloud metastore
services migrations
start:
gcloud 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 el ID del proyecto de Google Cloud .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: el ID del catálogo de Iceberg de destinoICEBERG_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 método
startMigration
con una configuración
BigLakeMetastoreMigrationConfig:
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/v1/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 el ID del proyecto de Google Cloud .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: el ID del catálogo de Iceberg de destinoICEBERG_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.
Sondea la ejecución de la migración
La solicitud inicia una operación de larga duración
(LRO) y devuelve un ID de ejecución de migración único. Puedes supervisar el progreso
de la 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 comando
gcloud
metastore services migrations
describe:
gcloud 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 devolvió 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 método
get
en esa ruta de ejecución:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://metastore.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID/migrationExecutions/MIGRATION_EXECUTION_ID"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de Google Cloud .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 devolvió en el paso anterior.
Informe de migración detallado
Una vez que se completa la migración (relleno o ejecución de prueba), la herramienta de migración escribe
dos archivos de informe JSON detallados basados en el esquema
MigrationReport
en la ruta de acceso de Cloud Storage de destino especificada en reportPath:
summary.json: Contiene la estructura de alto nivel agregada deMigrationSummary.full_report.json: Contiene un informe de migración detallado y más detallado. Para obtener más información, consultaCatalogReport.
Para ver el informe en la consola de Google Cloud , sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataproc Metastore.
En la lista de servicios de metastore, haz clic en el nombre visible del servicio que contiene el informe.
Se abrirá la página Migraciones.
En Migraciones administradas, selecciona el nombre de la migración que contiene el informe.
Se abrirá la página Detalles de la migración, en la que se muestran los detalles de las bases de datos y las tablas migradas, y su estado de migración.
Limitaciones
- El catálogo de destino debe incluir los buckets de Cloud Storage o las rutas de acceso en los que residen los datos y 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 la migración de tablas falla.
- La herramienta solo admite un reabastecimiento ú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 fuente.
- 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 admitida por el catálogo de destino (como tipos complejos), la migración de esa tabla específica falla.
- 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 catálogo de entorno de ejecución de Lakehouse.
- Aprende a consultar tablas de Iceberg con el catálogo de entorno de ejecución de Lakehouse, Spark y BigQuery.