Escribe datos de Managed Service para Apache Kafka en Cloud Storage

Si necesitas cargar datos desde un tema de Managed Service para Apache Kafka a un bucket de Cloud Storage, puedes hacerlo con una plantilla de Dataflow. Puedes usar la Google Cloud consola, la API de REST o Google Cloud CLI.

En este documento, se explica cómo configurar la plantilla de Dataflow de Kafka a Cloud Storage con la consola de Google Cloud .

Google Cloud productos utilizados

La plantilla de Dataflow de Kafka a Cloud Storage usa los siguientes productos Google Cloud facturables. Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.

  • Dataflow: Es un servicio de procesamiento de datos completamente administrado. La plantilla de Dataflow de Kafka a Cloud Storage utiliza Dataflow para crear una canalización que lee datos de tu tema de Kafka, realiza las transformaciones necesarias y los escribe en Cloud Storage. Las capacidades de ajuste de escala automático y recuperación automática de Dataflow garantizan que tu canalización se ejecute de manera confiable y eficiente.
  • Cloud Storage: Sirve como destino para tus datos de Kafka. Necesitarás un bucket de Cloud Storage para almacenar los datos que transfiera la canalización de Dataflow.

Además, la solución también usa Managed Service para Apache Kafka.

  • Managed Service para Apache Kafka: Un Google Cloud servicio que te ayuda a ejecutar Apache Kafka. Proporciona los datos de origen para la canalización. Necesitarás un clúster y un tema existentes de Managed Service para Apache Kafka con los datos que deseas transferir a Cloud Storage. Para obtener más información sobre los precios de Managed Service para Apache Kafka, consulta la guía de precios.

Antes de comenzar

Antes de iniciar la plantilla de Kafka a Cloud Storage de Dataflow, asegúrate de haber completado los siguientes pasos:

  1. Crea un clúster y un tema de Managed Service para Apache Kafka.

    Una forma de crear un clúster y un tema es seguir la guía de inicio rápido de Managed Service para Apache Kafka.

    Si tu tema contiene registros de Avro, consulta Configura el formato de mensaje de Kafka para conocer los requisitos de recursos adicionales.

  2. Habilita las siguientes Google Cloud APIs:

    • Dataflow

    • Cloud Storage

    gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \
    
  3. Crear un bucket de Cloud Storage

    Para obtener más información sobre cómo crear un bucket de Cloud Storage, consulta Crea un bucket.

Otorga el rol de cliente de Kafka administrado a la cuenta de servicio de trabajador de Dataflow

Para conectar tu trabajo de Dataflow a Managed Service for Apache Kafka, deberás otorgar permisos específicos a la cuenta de servicio de trabajador de Dataflow. Esta cuenta de servicio es la identidad que se usa para todas las VMs de trabajador en tu trabajo de Dataflow, y todas las solicitudes que se realizan desde estas VMs utilizan esta cuenta.

Para permitir el acceso a tus recursos de Kafka, debes otorgar el rol roles/managedkafka.client a la cuenta de servicio de trabajador de Dataflow. Este rol incluye el permiso managedkafka.clusters.connect necesario para establecer conexiones.

Para obtener más información sobre la cuenta de servicio de trabajador, consulta Seguridad y permisos para canalizaciones en Google Cloud.

Para otorgar el rol de cliente de Kafka administrado a la cuenta de servicio de Dataflow, sigue estos pasos:

Console

  1. En la consola de Google Cloud , dirígete a la página IAM.
    Ir a IAM
  2. Verifica que el proyecto esté configurado como el proyecto del consumidor al que accederá el cliente de Managed Service para Apache Kafka.
  3. Haz clic en Otorgar acceso.
  4. En la página nueva, en Agregar principales, ingresa la dirección de correo electrónico de la cuenta de servicio del trabajador de Dataflow que estás usando.
  5. En Asignar roles, selecciona el rol Cliente de Kafka administrado.
  6. Haz clic en Guardar.

gcloud CLI

  1. En la consola de Google Cloud , activa Cloud Shell.

    Activa Cloud Shell

    En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  2. Ejecuta el comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/managedkafka.client

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto.

    • SERVICE_ACCOUNT_EMAIL es la dirección de correo electrónico de la cuenta de servicio del trabajador de Dataflow.

Inicia la plantilla de Dataflow de Kafka a Cloud Storage

Puedes iniciar la plantilla Kafka to Cloud Storage Dataflow desde la página de detalles del clúster en la consola.

  1. En la consola de Google Cloud , ve a la página Clúster.

    Ir a Clústeres

    Se enumeran los clústeres que creaste en un proyecto.

  2. Para ver la página de detalles del clúster, haz clic en el nombre de un clúster.
  3. En la página de detalles del clúster, haz clic en Importar datos.

    Se abrirá la página Crea un trabajo de Dataflow con la plantilla "Kafka a Kafka".

  4. En la plantilla, para Plantilla de Dataflow, actualiza la plantilla a Kafka to Cloud Storage.

Configura los campos de la plantilla según la información incluida en las siguientes secciones.

Ingresa un nombre para el trabajo

En el campo Nombre del trabajo, ingresa un nombre para tu trabajo de Dataflow.

El nombre debe ser único entre todos los trabajos en ejecución actuales del proyecto.

Elige un extremo regional para tu canalización

En el campo Extremo regional, configura el extremo regional en la ubicación de tu clúster de Kafka para minimizar las tarifas de transferencia de datos entre regiones.

Los trabajadores de Dataflow pueden ejecutarse independientemente de la región de tu clúster de Kafka. Sin embargo, incurrirás en costos de salida entre regiones si inicias trabajadores fuera de la región de tu clúster de Kafka.

Para ver la ubicación del clúster, sigue los pasos que se indican en Cómo enumerar tus clústeres de Managed Service para Apache Kafka.

Configura la fuente

  1. En Fuente, conserva el valor predeterminado de Managed Service para Apache Kafka.

  2. En Clúster de Kafka y Modo de autenticación de origen de Kafka, conserva los valores predeterminados.

  3. En Kafka topic, selecciona un tema de la lista de temas disponibles.

Configura el formato del mensaje de Kafka

La plantilla de Dataflow admite los siguientes formatos de mensajes:

  • Formato de transferencia de Confluent de Avro: Cada mensaje de Kafka incluye un byte mágico, un ID de esquema y el registro codificado de forma binaria de Avro.

    En el caso de los formatos de Avro (formato de transferencia de Confluent), puedes utilizar un solo esquema o varios:

    • Esquema único: Todos los mensajes se ajustan a un único esquema de Avro predefinido.

    • Varios esquemas: Los mensajes pueden utilizar diferentes esquemas. Esto solo se admite para el formato Avro (formato de transferencia de Confluent).

  • Avro (codificado de forma binaria): Los mensajes solo contienen la carga útil del registro, sin metadatos. Debes proporcionar un archivo de esquema Avro (.avsc) subido a Cloud Storage. Todos los mensajes deben cumplir con este único esquema.

  • JSON: Los registros no requieren un esquema predefinido. Los registros que no se ajustan al esquema se envían a la cola de mensajes no entregados (si está configurada) o se registra un mensaje de error. El formato admitido es {"field": "value"}. No se admite el formato [{"name": "field", "value": "value"}].

Managed Service para Apache Kafka no ofrece un registro de esquemas. La plantilla solo admite el paso de credenciales de autenticación a registros de esquemas que sean compatibles con el formato de cableado de Confluent.

Formato de transferencia de Confluent Avro

Si eliges esta opción como el formato del mensaje de Kafka, configura los siguientes parámetros adicionales:

Fuente del esquema: Este campo le indica a la canalización dónde encontrar el esquema. Elige una de las siguientes opciones:

  • Registro de esquemas: Tus esquemas se almacenan en un registro de esquemas de Confluent. Esto es útil para desarrollar esquemas y administrar varias versiones. Asegúrate de que se pueda acceder al registro de esquemas desde la red del clúster de Managed Service para Apache Kafka y de que esté alojado en la misma región que tus trabajadores de Dataflow. Puedes usar un registro de esquemas con situaciones de esquemas únicos y múltiples. Establece los siguientes parámetros de configuración adicionales:

    • URL de conexión del registro de esquemas: Proporciona la URL para conectarte a tu registro de esquemas.

    • Modo de autenticación: Si tu registro requiere autenticación, selecciona OAuth o TLS. De lo contrario, selecciona Ninguno.

  • Single schema file: Elige esta opción si todos tus mensajes siguen un esquema único y fijo definido en un archivo.

    • Archivo de Cloud Storage para el archivo de esquema de Avro: Es la ruta de acceso al archivo de esquema de Avro que se usa para decodificar todos los mensajes de un tema.

Codificación binaria de Avro

Si eliges esta opción como el formato del mensaje de Kafka, configura los siguientes parámetros adicionales:

  • Archivo de Cloud Storage para el archivo de esquema de Avro: Es la ruta de acceso al archivo de esquema de Avro que se usa para decodificar todos los mensajes de un tema.

JSON

Si eliges esta opción como el formato del mensaje de Kafka, no se requiere ninguna otra configuración.

Especifica el desplazamiento de Kafka

  1. Para evitar el reprocesamiento de mensajes cuando se deben reiniciar trabajadores individuales o toda la canalización, selecciona la opción Confirmar desfases en Kafka. Esto garantiza que tu canalización reanude el procesamiento desde donde lo dejó, lo que evita el procesamiento duplicado y las posibles incoherencias de datos.

  2. En el campo Enter Consumer Group ID, ingresa un nombre único para el grupo de esta canalización. En la mayoría de los casos, querrás que la canalización lea cada mensaje una vez y que se pueda reiniciar.

  3. En el campo Offset de inicio predeterminado de Kafka, la canalización de Dataflow ofrece dos opciones de offset de inicio. Selecciona una de las siguientes opciones:

    • Earliest: Procesa mensajes desde el principio del tema de Kafka.

    • Latest: Procesa mensajes a partir del desplazamiento más reciente disponible.

Configura el destino

Estas opciones controlan cómo tu canalización de datos escribe datos en Cloud Storage.

  1. En Destino, ingresa la ruta de acceso al bucket y el prefijo del nombre de archivo para tus archivos de salida. El prefijo del archivo debe terminar con una barra diagonal. Por ejemplo: gs://test-bucket/test-prefix/.

  2. En Duración de la ventana, ingresa el período para escribir datos en Cloud Storage. Elige el formato adecuado (Ns para segundos, Nm para minutos, Nh para horas) según tus requisitos de procesamiento de datos.

  3. En Prefijo del nombre de archivo de salida de los archivos que se escribirán, puedes proporcionar un prefijo que se agregará a cada archivo de resultado para una mejor organización e identificación.

  4. En Cantidad máxima de fragmentos de salida, establece el número en cero. Puedes especificar la cantidad de fragmentos que se producirán cuando se escriban los archivos. Aumentar la cantidad puede lograr una mayor capacidad de procesamiento, pero también genera un aumento de los costos debido a los mayores costos de Shuffle. El servicio selecciona una cantidad óptima cuando estableces la cantidad en cero.

Configura la cola de mensajes no entregados

A veces, los mensajes no se pueden procesar debido a daños, tipos de datos incompatibles o discrepancias en el esquema.

Para controlar estos casos, habilita la cola de mensajes no entregados en la plantilla y proporciona un nombre de tabla. La plantilla crea la tabla con un esquema estandarizado.

Configura la encriptación

De forma predeterminada, todos los datos en reposo y en tránsito se encriptan con unGoogle-owned and Google-managed encryption key. Si tienes claves de encriptación administradas por el cliente (CMEK), puedes seleccionar tus propias claves. Para obtener más información sobre cómo configurar una CMEK, consulta Configura la encriptación de mensajes.

Configura las redes

Debes especificar la red y la subred del clúster en la plantilla de Dataflow. La sección Parámetros opcionales de la plantilla te permite definir la red para tus trabajadores de Dataflow.

De forma predeterminada, la plantilla Kafka to Cloud Storage Dataflow aprovisiona trabajadores de Dataflow en la red predeterminada de tu proyecto. Para permitir que tu clúster de Managed Service para Apache Kafka envíe datos a Cloud Storage a través de Dataflow, asegúrate de que tus trabajadores de Dataflow puedan acceder a la red de tu clúster.

Te recomendamos que, si tu clúster de Kafka no está conectado a una subred en la red predeterminada del proyecto, uses la red predeterminada del proyecto para tu clúster de Kafka.

Para obtener más información sobre cómo configurar redes con tu canalización de Dataflow, consulta los siguientes recursos:

Si tienes problemas para configurar la red de Dataflow, consulta la guía para solucionar problemas de redes de Dataflow.

Configura parámetros opcionales de Dataflow

Configura los parámetros opcionales solo si conoces el impacto de la configuración en los trabajadores de Dataflow. Los parámetros de configuración incorrectos pueden afectar el rendimiento o el costo. Para obtener explicaciones detalladas de cada opción, consulta Parámetros opcionales.

Supervisión

La plantilla de Dataflow para Kafka a Cloud Storage proporciona una experiencia de supervisión que te permite explorar registros, métricas y errores en la consola. Este paquete de herramientas de supervisión está disponible como parte de la interfaz de usuario de Dataflow.

La pestaña Job Metrics te permite crear paneles personalizados. Para la plantilla de Dataflow Kafka to Cloud Storage, te recomendamos que configures un panel de Métricas del trabajo que supervise lo siguiente:

  • Capacidad de procesamiento: Es el volumen de datos que se procesan en cualquier momento. Esto es útil para supervisar el flujo de datos a través de tu trabajo y para identificar posibles problemas de rendimiento.

    Para obtener más información, consulta Supervisión de la capacidad de procesamiento de Dataflow.

  • Actualidad de los datos: Es la diferencia en segundos entre la marca de tiempo del elemento de datos y la hora en que se procesa el evento en tu canalización. Esto ayuda a identificar cuellos de botella en el rendimiento y las fuentes de datos, o bien reintentos frecuentes.

    Para obtener más información, consulta Supervisión de la actualidad de los datos de Dataflow.

  • Tareas pendientes: Cantidad de bytes en espera de procesamiento. Esta información fundamenta las decisiones de ajuste de escala automático.

Para obtener más información sobre la supervisión de Dataflow, consulta la documentación de supervisión de Dataflow.

Soluciona problemas

Si tienes problemas de rendimiento con tu canalización de Dataflow, Dataflow proporciona un conjunto integral de herramientas de diagnóstico y solución de problemas.

A continuación, se incluyen dos situaciones comunes y sus respectivas guías de solución de problemas:

Para obtener una descripción general de la depuración de canalizaciones de Dataflow, consulta Soluciona problemas y depura canalizaciones de Dataflow.

Limitaciones conocidas

  • La plantilla no admite el paso de credenciales para la autenticación en tu registro de esquema.

  • Cuando crees el trabajo de Dataflow Kafka to Cloud Storage, asegúrate de que el proyecto Google Cloud esté configurado en el mismo proyecto que contiene el clúster de Managed Service para Apache Kafka.

¿Qué sigue?