Cómo construir un data lake

En este artículo se explica cómo usar un data lake en Google Cloud. Con un data lake, se ofrece a organizaciones como la tuya la flexibilidad para capturar todos los aspectos de tus operaciones comerciales en forma de datos. Con el tiempo, estos datos pueden acumularse en los petabytes o incluso en exabytes, pero con la separación de almacenamiento y procesamiento, almacenar todos estos datos ahora es más económico que nunca.

Tras capturar y almacenar los datos, puedes aplicar una variedad de técnicas de procesamiento para extraer estadísticas de ellos. El almacenamiento de datos es el enfoque estándar para realizar estadísticas de negocios. Sin embargo, con este enfoque se requieren esquemas bastante rígidos para tipos de datos bien comprendidos, como pedidos, inventario y detalles de pedidos. Las estadísticas que se basan solo en el almacenamiento de datos tradicional hacen que sea difícil tratar con datos que no se ajustan a un esquema bien definido, ya que los datos a menudo se descartan y se pierden para siempre.

Pasar del almacenamiento de datos al enfoque de “almacenar todo” de un data lake es útil solo si aún es posible extraer estadísticas de todos los datos. A menudo, los científicos, los ingenieros y los analistas de datos desean usar las herramientas estadísticas de su elección para procesar y analizar en el data lake. Además, el lake debe admitir la transferencia de grandes cantidades de datos de múltiples fuentes.

Con estas consideraciones en mente, así es como puedes compilar un data lake en Google Cloud. En el siguiente diagrama, se describen las etapas clave en una solución de data lake.

Las etapas clave en una solución de data lake

En este artículo, se exploran las etapas con más detalle y se discute cómo Google Cloud puede ser de ayuda.

Almacenamiento: Cloud Storage como el data lake

Cloud Storage es ideal para funcionar como el repositorio de almacenamiento central por muchas razones.

Rendimiento y durabilidad: con Cloud Storage puedes comenzar con unos cuantos archivos pequeños y hacer crecer el data lake hasta exabytes de tamaño. En Cloud Storage se admiten transferencias de alto volumen de datos nuevos y alto volumen de consumo de datos almacenados en combinación con otros servicios como Pub/Sub. Si bien el rendimiento es crítico para un data lake, la durabilidad es aún más importante, y Cloud Storage está diseñado para una durabilidad anual del 99.999999999%.

Coherencia sólida: una característica clave que diferencia a Cloud Storage de muchos otros almacenes de objetos es su compatibilidad con la coherencia sólida en situaciones como operaciones de lectura después de escritura, otorgamiento de acceso a recursos y creación de listas de depósitos y objetos. Sin esta coherencia, debes implementar soluciones alternativas complejas que requieren mucho tiempo a fin de determinar cuándo los datos están disponibles para el procesamiento.

Eficacia en costos: en Cloud Storage se proporciona un número de clases de almacenamiento a precios múltiples para adaptarse a diferentes patrones de acceso y necesidades de disponibilidad, y también ofrecer la flexibilidad a fin de equilibrar el costo y la frecuencia del acceso a los datos. Sin sacrificar el rendimiento, puedes acceder a los datos de estas clases de almacenamiento diferentes mediante una API coherente. Por ejemplo, puedes almacenar datos que se usan con poca frecuencia en Cloud Storage Nearline, Cloud Storage Coldline o Cloud Storage Archive con una política de ciclo de vida y acceder a ellos más tarde, tal vez a fin de recopilar datos de entrenamiento para el aprendizaje automático con una latencia menor que un segundo.

Procesamiento flexible: en Cloud Storage, se proporciona una integración nativa con una serie de servicios potentes de Google Cloud, como BigQuery, Dataproc (ecosistema Hadoop), Dataflow para estadísticas sin servidores, API de Video Intelligence y Cloud Vision, y AI Plataform, lo que te brinda flexibilidad para elegir la herramienta adecuada a fin de analizar tus datos.

Repositorio central: se ofrece una ubicación central para almacenar y acceder a los datos de los equipos y departamentos. De esa forma, Cloud Storage te ayuda a evitar los sistemas aislados de datos que deben mantenerse sincronizados.

Seguridad: dado que los data lakes están diseñados para almacenar todo tipo de datos, las empresas esperan que las capacidades de control de acceso sean sólidas a fin de garantizar que sus datos no caigan en las manos equivocadas. En Cloud Storage se ofrecen una serie de mecanismos para implementar un control de acceso detallado sobre tus activos de datos.

Transferencia de datos

Una arquitectura de data lake debe ser capaz de transferir volúmenes variables de datos de diferentes fuentes, como sensores de Internet de las cosas (IoT), actividad de flujo de clics en sitios web, datos de procesamiento de transacciones en línea (OLTP) y datos locales, solo por mencionar algunos. En esta sección aprenderás cómo Google Cloud puede admitir una amplia variedad de casos prácticos de transferencia.

Pub/Sub y Dataflow: puedes transferir y almacenar datos en tiempo real directamente en Cloud Storage y escalar de forma vertical y horizontal en respuesta al volumen de datos.

Servicio de transferencia de almacenamiento: mover grandes cantidades de datos no suele ser tan sencillo como emitir un solo comando. Debes lidiar con problemas como programar transferencias de datos periódicas, sincronizar archivos entre la fuente y el receptor, o mover archivos de forma selectiva según los filtros. El Servicio de transferencia de almacenamiento proporciona un mecanismo robusto para llevar a cabo estas tareas.

gsutil: para transferencias únicas o iniciadas de forma manual, puedes considerar usar gsutil, que es una herramienta de línea de comandos de código abierto disponible para Windows, Linux y Mac. Admite transferencias de varios subprocesos, transferencias procesadas, cargas compuestas paralelas, reintentos y capacidad de reanudación.

Transfer Appliance: según el ancho de banda de tu red, si deseas migrar grandes volúmenes de datos a la nube para analizarlos, puede que te resulte menos lento realizar la migración sin conexión mediante Transfer Appliance.

Consulta una descripción general de las opciones de transferencia más detallada y los criterios clave para la toma de decisiones que participan en la elección de una opción de transferencia.

Procesamiento y estadísticas

Una vez que hayas transferido y almacenado datos, el siguiente paso es ponerlos a disposición para su análisis. En algunos casos, puedes almacenar datos en un esquema bien comprendido de inmediato después de la transferencia, lo que simplifica las consultas en el sitio. Por ejemplo, si almacenas los datos entrantes en formato Avro en Cloud Storage, puedes seguir estos pasos:

  • Usa Hive en Dataproc para emitir consultas de SQL en los datos.
  • Emite consultas directamente en los datos de BigQuery.
  • Carga los datos en BigQuery y luego consulta.

Sin embargo, no siempre puedes dar forma a los datos en un esquema conocido mientras se transfiere y almacena. De hecho, la razón principal para mantener un data lake en lugar de un almacén de datos es almacenar todo ahora a fin de que puedas extraer información más adelante. Según la naturaleza de los datos sin procesar y los tipos de estadísticas involucrados, el flujo de trabajo puede variar de simple a complejo. El siguiente diagrama proporciona una descripción general de alto nivel.

Descripción general de alto nivel del flujo de trabajo del data lake

Extrae y explora datos

Debido a que una gran parte de los datos almacenados en el lake no están listos para el consumo inmediato, primero debes extraer estos datos a fin de obtener un valor latente. Jupyter Notebook es una herramienta muy usada para explorar datos sin procesar. Ese es el propósito por el que Google Cloud ofrece Datalab, un servicio completamente administrado de Jupyter Notebook.

Datalab viene preinstalado con una amplia gama de bibliotecas de ciencia de datos populares como TensorFlow y NumPy. Además de usar Datalab, tienes acceso al ecosistema tradicional de herramientas de Hadoop en Dataproc y a las estadísticas totales sin servidores con Dataflow. Para un análisis potente basado en SQL, pueden transformar datos sin procesar con Dataprep de Trifacta y cargarlos en BigQuery.

Cuando comprendes el potencial estadístico de un subconjunto de datos sin procesar en el lake, puedes poner ese subconjunto a disposición de un público más amplio.

Cómo diseñar e implementar flujos de trabajo

Hacer que un subconjunto de datos esté más disponible significa crear data marts enfocados, como se muestra en el diagrama anterior. Puedes mantener actualizados estos data marts con canalizaciones de datos orquestadas que toman datos sin procesar y los transforman en un formato que pueden consumir los procesos intermedios y los usuarios. Estas canalizaciones varían según la naturaleza de los datos y los tipos de estadísticas usadas. Estos son algunos flujos de trabajo de estadísticas comunes y cómo puedes implementarlos en Google Cloud.

Transformación de datos sin procesar y carga en BigQuery

En el simple, pero común flujo de trabajo que se muestra en el siguiente diagrama, usas un proceso de extracción, transformación y carga (ETL) para transferir datos en un almacén de datos de BigQuery. Luego, puedes consultar los datos mediante SQL. Cloud Dataprep, una herramienta visual para la limpieza y preparación de datos que es ideal para trabajos ETL simples, mientras que Dataflow con Apache Beam brinda flexibilidad adicional para trabajos ETL más involucrados.

Flujo de trabajo para cargar datos en BigQuery

Estadísticas por lote

Si quieres usar el ecosistema de productos de Hadoop para las estadísticas por lotes, almacena tus datos transformados en una ubicación separada de Cloud Storage. Puedes usar Dataproc para ejecutar consultas en estos datos mediante Spark, Spark SQL, SQL en Hive y herramientas similares. Apache Avro, Apache Parquet y Apache ORC son formatos populares para estos datos mejor definidos. En el siguiente diagrama, se resume este flujo de trabajo.

Cómo usar productos de Hadoop para estadísticas por lote

Analítica en tiempo real

Si deseas una canalización sencilla y basada en SQL, el procesamiento de transmisión en BigQuery te da la posibilidad de consultar datos a medida que se transfieren. Agregar Pub/Sub y Dataflow con Beam ofrece capacidad de procesamiento de flujo más profunda de modo que, por ejemplo, tus usuarios puedan realizar agregaciones, sistemas de ventanas y filtros antes de almacenar datos en BigQuery. Para estadísticas de series temporales, puedes almacenar datos transferidos en Cloud Bigtable y así facilitar el análisis rápido. En el siguiente diagrama, se ilustra este flujo de trabajo.

Almacenamiento de datos en Cloud Bigtable para estadísticas en tiempo real

Aprendizaje automático

El aprendizaje automático puede beneficiarse mucho de la gran cantidad de datos en un data lake. Después de identificar los datos de entrenamiento útiles, los pasos de preparación de datos asociados y la red de arquitectura de aprendizaje automático, puedes organizar estos pasos como se muestra en el siguiente diagrama. AI Platform hace que sea fácil perfeccionar modelos y, luego, usarlos para hacer predicciones tanto por lotes como en línea.

Cómo organizar datos para el aprendizaje automático

No todos los casos prácticos de aprendizaje automático garantizan el diseño y la capacitación de modelos personalizados. Google Cloud incluye modelos previamente entrenados para el habla, la visión, la inteligencia de video y el procesamiento del lenguaje natural. Para estos casos, pasa las entradas apropiadas, como audio, imágenes o video, al servicio de Google Cloud correspondiente. Luego, extrae metadatos valiosos y almacénalos en un servicio como BigQuery para consultas y análisis adicionales. En el diagrama siguiente, se ilustra este flujo.

Cómo usar modelos de aprendizaje automático previamente entrenados

Próximos pasos