Migra la infraestructura de Hadoop local a Google Cloud

En esta guía, se proporciona una descripción general de cómo migrar el sistema Apache Hadoop local a Google Cloud. Se describe un proceso de migración que no solo mueve tu trabajo de Hadoop a Google Cloud, sino que también te permite adaptar tu trabajo a fin de aprovechar los beneficios de un sistema Hadoop optimizado para la computación en la nube. También presenta algunos conceptos fundamentales que debes comprender para traducir tu configuración de Hadoop a Google Cloud.

Esta es la primera de varias guías que describen cómo trasladarse desde Hadoop local:

Los beneficios de migrar a Google Cloud

Hay muchas formas en que el uso de Google Cloud puede ahorrarte tiempo, dinero y esfuerzo en comparación con el uso de una solución Hadoop local. En muchos casos, adoptar un enfoque basado en la nube puede hacer que tu solución general sea más simple y fácil de administrar.

Compatibilidad integrada para Hadoop

Google Cloud incluye Dataproc, que es un entorno administrado de Hadoop y Spark. Puedes usar Dataproc para ejecutar la mayoría de tus trabajos existentes con una alteración mínima, por lo que no necesitas alejarte de todas las herramientas de Hadoop que ya conoces.

Hardware y configuración administrados

Cuando ejecutes Hadoop en Google Cloud, nunca tendrás que preocuparte por el hardware físico. Especificas la configuración de tu clúster y Dataproc le asigna recursos. Puedes escalar tu clúster en cualquier momento.

Administración de versiones simplificada

Mantener las herramientas de código abierto actualizadas y en funcionamiento conjunto es una de las partes más complejas de la administración de un clúster de Hadoop. Cuando usas Dataproc, el control de versiones de Dataproc administra gran parte de ese trabajo.

Configuración de trabajo flexible

Una configuración de Hadoop local típica usa un único clúster que sirve para muchos propósitos. Cuando te mueves a Google Cloud, puedes enfocarte en tareas individuales mediante la creación de tantos clústeres como necesites. Esto quita gran parte de la complejidad de mantener un solo clúster con interacciones de configuración de software y dependencias crecientes.

Planifica la migración

La migración de una solución Hadoop local a Google Cloud requiere un cambio de enfoque. Un sistema Hadoop local típico consiste en un clúster monolítico que admite muchas cargas de trabajo, a menudo en múltiples áreas empresariales. Como resultado, el sistema se vuelve más complejo con el tiempo y puede requerir que los administradores realicen concesiones para que todo funcione en el clúster monolítico. Cuando transfieres tu sistema Hadoop a Google Cloud, puedes reducir la complejidad administrativa. Sin embargo, para lograr esa simplificación y obtener el procesamiento más eficiente en Google Cloud con el mínimo costo, debes replantearte cómo estructurar tus datos y trabajos.

Dado que Dataproc ejecuta Hadoop en Google Cloud, usar un clúster de Dataproc persistente para replicar tu configuración local puede parecer la solución más fácil. Sin embargo, este enfoque tiene algunas limitaciones:

  • Mantener tus datos en un clúster HDFS persistente mediante Dataproc es más costoso que almacenarlos en Cloud Storage, que es lo que recomendamos, como se explica más adelante. Mantener los datos en un clúster HDFS también limita tu capacidad de usar tus datos con otros productos de Google Cloud.
  • Mejorar o reemplazar algunas de tus herramientas basadas en código abierto por otros servicios relacionados de Google Cloud puede ser más eficiente o económico para casos prácticos particulares.
  • Usar un solo clúster de Dataproc persistente para tus trabajos es más difícil de administrar que cambiar a los clústeres orientados que entregan trabajos individuales o áreas de trabajo.

La manera más rentable y flexible de migrar tu sistema Hadoop a Google Cloud es dejar de pensar en términos de clústeres persistentes y grandes, y pensar en clústeres pequeños y de corta duración diseñados para ejecutar trabajos específicos. El objetivo de almacenar tus datos en Cloud Storage es admitir múltiples clústeres de procesamiento temporales. Este modelo a menudo se denomina modelo efímero, porque los clústeres que usas para procesar los trabajos se asignan según sea necesario y se liberan a medida que los trabajos finalizan.

En el siguiente diagrama, se muestra una migración hipotética de un sistema local a un modelo efímero en Google Cloud.

Diagrama en el que se ilustra cómo se pueden reorganizar los clústeres locales cuando se migra a Google Cloud

En el ejemplo, se mueven cuatro trabajos que se ejecutan en dos clústeres locales a Dataproc. Los clústeres efímeros que se usan para ejecutar los trabajos en Google Cloud se definen a fin de maximizar la eficiencia de los trabajos individuales. Los dos primeros trabajos usan el mismo clúster, mientras que el tercero y cuarto se ejecutan cada uno en su propio clúster. Cuando migras tus propios trabajos, puedes personalizar y optimizar los clústeres para trabajos individuales o grupos de trabajos, según sea adecuado en tu labor específica. Dataproc te ayuda a definir con rapidez varios clústeres, ponerlos en línea y escalarlos para satisfacer tus necesidades.

Los datos del ejemplo se transfieren de dos clústeres HDFS locales a depósitos de Cloud Storage. Los datos del primer clúster se dividen en varios bucket s y el segundo clúster se traslada a un solo bucket. Puedes personalizar la estructura de tus datos en Cloud Storage para satisfacer las necesidades de tus aplicaciones y tu empresa.

El ejemplo de migración captura los estados inicial y final de una migración completa a Google Cloud. Esto implica un solo paso, pero obtendrás resultados óptimos si no piensas en el traslado a GCP como una migración completa y única. En su lugar, piensa el traslado como una refactorización de tus soluciones para usar un conjunto de herramientas nuevo en formas que no eran posibles en las instalaciones locales. Para hacer que esta refactorización funcione, recomendamos migrar de forma incremental.

Estos son los pasos recomendados para migrar tus flujos de trabajo a Google Cloud:

  1. Primero, traslada tus datos

    • Traslada tus datos a depósitos de Cloud Storage.
    • Empieza de a poco. Usa datos archivados o de copia de seguridad para minimizar el impacto en tu sistema Hadoop existente.
  2. Experimenta

    • Usa un subconjunto de datos para probar y experimentar. Haz una prueba de concepto a pequeña escala para cada uno de tus trabajos.
    • Prueba nuevos enfoques para trabajar con tus datos.
    • Ajústate a Google Cloud y a los paradigmas de computación en la nube.
  3. Piensa en términos de clústeres especializados y efímeros

    • Usa los clústeres más pequeños posibles: limita su alcance a trabajos individuales o pequeños grupos de trabajos muy relacionados.
    • Crea clústeres cada vez que los necesites para un trabajo y bórralos cuando termines.
  4. Usa las herramientas de Google Cloud cuando sea apropiado.

Migra a un modelo efímero

El mayor cambio en tu enfoque entre ejecutar un flujo de trabajo local de Hadoop y ejecutarlo en Google Cloud es pasar de clústeres monolíticos persistentes a clústeres especializados y efímeros. Creas un clúster cuando necesitas ejecutar un trabajo y lo borras cuando el trabajo finaliza. Los recursos necesarios para tus trabajos están activos solo cuando se usan, de forma que solo pagas por lo que usas. Este enfoque te permite adaptar las configuraciones de clúster para trabajos individuales. Debido a que no debes mantener y configurar un clúster persistente, se reducen los costos de uso de recursos y administración de clústeres.

En esta sección, se describe cómo trasladar tu infraestructura de Hadoop existente a un modelo efímero.

Separa los datos de la computación

Usar Cloud Storage como almacenamiento continuo para tus flujos de trabajo tiene las siguientes ventajas:

  • Es más fácil administrar los permisos de acceso.
  • Es un sistema de archivos compatible con Hadoop (HCFS), por lo que es fácil de usar con tus trabajos existentes.
  • Es más rápido que HDFS en muchos casos.
  • Requiere menos mantenimiento que HDFS.
  • Es más fácil migrar datos que HDFS.
  • Te permite usar con facilidad tus datos con toda la gama de productos de Google Cloud.
  • Es bastante menos costoso que mantener los datos en HDFS en un clúster de Dataproc persistente.

Con los datos almacenados de manera constante en Cloud Storage, puedes ejecutar tus trabajos en clústeres de Hadoop efímeros administrados por Dataproc.

En algunos casos, podría tener más sentido mover datos a otra tecnología de Google Cloud, como BigQuery o Bigtable. Sin embargo, la mayoría de los datos de propósito general deben conservarse en Cloud Storage. Más adelante en esta guía se proporcionan más detalles sobre estas opciones de almacenamiento alternativas.

Ejecuta trabajos en clústeres efímeros

Dataproc facilita la creación y eliminación de clústeres para que puedas dejar de usar un clúster monolítico y pasar a usar muchos clústeres efímeros. Este enfoque tiene varias ventajas:

  • Puedes evitar puntos únicos de fallo y aumentar la confiabilidad de tu canalización de datos. Cuando un clúster de larga duración compartido se encuentra en un estado de error, se puede bloquear toda la canalización de datos. La reparación de un clúster de larga duración con estado puede llevar mucho tiempo y causar infracciones del objetivo de nivel de servicio (SLO). Por el contrario, un clúster efímero sin estado problemático se puede borrar con facilidad y, luego, volver a crear con reintentos de trabajo.
  • Puedes tener un rendimiento más predecible en el trabajo y evitar infracciones de SLO si borras las contenciones de recursos entre trabajos.
  • Puedes optimizar las configuraciones de clúster y las políticas de ajuste de escala automático para trabajos individuales.
  • Puedes obtener los últimos parches de seguridad, correcciones de errores y optimizaciones cuando creas un clúster efímero para un trabajo.
  • Puedes evitar problemas comunes con los clústeres de larga duración, como los discos que se llenan con registros y archivos temporales, o el clúster que no escala verticalmente debido al agotamiento de la zona en la zona.
  • No necesitas mantener los clústeres a lo largo del tiempo porque los clústeres efímeros se configuran cada vez que los usas. No tener que mantener clústeres elimina la carga de administrar herramientas entre trabajos.
  • No necesitas mantener una infraestructura separada para el desarrollo, las pruebas ni la producción. Puedes usar las mismas definiciones para crear tantas versiones diferentes de un clúster como necesites.
  • Puedes solucionar problemas más rápido con el clúster de trabajo único aislado.
  • Solo pagas por los recursos que usan tus trabajos.

Puedes usar las acciones de inicialización de Dataproc para definir la configuración de nodos en un clúster. Esto facilita el mantenimiento de las diferentes configuraciones de clúster que necesitas para admitir trabajos individuales y grupos de trabajos relacionados. Puedes usar las acciones de inicialización de ejemplo proporcionadas para comenzar. Los ejemplos demuestran cómo crear tus propias acciones de inicialización.

Minimiza la vida útil de los clústeres efímeros

El objetivo de los clústeres efímeros es usarlos solo durante la vida útil de los trabajos. Cuando sea el momento de ejecutar un trabajo, sigue este proceso:

  1. Crea un clúster configurado de forma adecuada.

  2. Ejecuta tu trabajo de forma que se envíen los resultados a Cloud Storage o a otra ubicación persistente.

  3. Borra el clúster.

  4. Use el resultado del trabajo como lo necesite.

  5. Visualiza registros en Cloud Logging o Cloud Storage.

Este proceso se muestra en el siguiente diagrama:

Diagrama de un flujo de trabajo efímero en la nube

Usa clústeres persistentes pequeños solo cuando sea necesario

Si no puedes realizar tu trabajo sin un clúster persistente, puedes crear uno. Esta opción puede ser costosa y no se recomienda si hay una manera de realizar tu trabajo en clústeres efímeros.

Puedes minimizar el costo de un clúster persistente de la siguiente manera:

  • Crea el clúster más pequeño posible.
  • Limita el alcance de tu labor en ese clúster al menor número de trabajos posible.
  • Escala el clúster al menor número de nodos posible y agrega más de forma dinámica para satisfacer la demanda.

Migra de forma incremental

Migrar de forma incremental tiene muchas ventajas. Puedes llevar a cabo las siguientes acciones:

  • Aislar trabajos individuales en tu infraestructura existente de Hadoop de la complejidad inherente a un entorno maduro
  • Examinar cada trabajo de forma aislada a fin de evaluar sus necesidades y determinar la mejor ruta para la migración
  • Manejar problemas inesperados a medida que surjan sin retrasar las tareas dependientes
  • Crear una prueba de concepto para cada proceso complejo sin afectar tu entorno de producción
  • Trasladar tus cargas de trabajo al modelo efímero recomendado de manera inteligente y deliberada

Tu migración es exclusiva de tu entorno de Hadoop, por lo que no existe un plan universal que se ajuste a todas las situaciones de migración. Haz un plan de migración que te permita traducir cada pieza a un paradigma de computación en la nube.

A continuación, se muestra una secuencia de migración incremental típica:

  1. Migra una parte de los datos a Google Cloud.

  2. Experimenta con esos datos:

    1. Replica los trabajos existentes que usan esos datos.

    2. Crea nuevos prototipos que trabajen con esos datos.

  3. Repite el proceso con datos adicionales.

Comienza con los datos menos vitales. En las primeras etapas, se recomienda usar archivos y datos de copia de seguridad.

Un tipo de trabajo de bajo riesgo que sirve como buena prueba de inicio es el reabastecimiento mediante la ejecución del procesamiento de picos de actividad en los datos de archivo. Puedes configurar trabajos que llenen los vacíos en el procesamiento de los datos que existían antes de que se implementaran los trabajos actuales. Comenzar con trabajos de ráfaga suele proporcionar experiencia en el escalamiento en Google Cloud al principio de tu plan de migración. Esto puede servirte cuando comiences a migrar trabajos más vitales.

En el siguiente diagrama, se muestra un ejemplo de una típica arquitectura híbrida de reabastecimiento.

Diagrama de una arquitectura típica de reabastecimiento en la nube

El ejemplo tiene dos componentes principales. Primero, los trabajos programados que se ejecutan en el clúster local envían datos a Cloud Storage a través de una puerta de enlace de Internet. En segundo lugar, los trabajos de reposición se ejecutan en clústeres efímeros de Dataproc. Además del relleno, puedes usar clústeres efímeros en Google Cloud a fin de experimentar y crear pruebas de concepto para trabajos futuros.

Planifica con la migración completa en mente

Hasta ahora, en esta guía, se supone que tu objetivo es mover todo tu sistema Hadoop del entorno local a Google Cloud. Un sistema Hadoop que se ejecuta completamente en Google Cloud es más fácil de administrar que uno que opera en la nube y de forma local. Sin embargo, a menudo es necesario un enfoque híbrido para satisfacer tus necesidades empresariales o tecnológicas.

Diseña una solución híbrida

Las siguientes son algunas razones por las que puedes necesitar una solución híbrida:

  • Te encuentras en el proceso de desarrollar sistemas nativos de la nube, por lo que los sistemas existentes que dependen de ellos deben continuar ejecutándose en las instalaciones locales hasta que termines.
  • Tienes requisitos empresariales para mantener tus datos en las instalaciones locales.
  • Debes compartir datos con otros sistemas que se ejecutan de forma local y no pueden interactuar con Google Cloud debido a restricciones técnicas o comerciales.

Una solución híbrida típica tiene cuatro partes principales:

  1. Un clúster local de Hadoop

  2. Una conexión del clúster local a Google Cloud

  3. Almacenamiento de datos centralizado en Google Cloud

  4. Componentes nativos de la nube que funcionan con datos en Google Cloud

Un problema que debes abordar con una solución de nube híbrida es cómo mantener tus sistemas sincronizados. Es decir, ¿cómo te asegurarás de que los cambios que realices en los datos en un lugar se reflejen en el otro? Puedes simplificar la sincronización si distingues con claridad cómo se usan tus datos en los diferentes entornos.

Por ejemplo, es posible que tengas una solución híbrida en la que solo los datos archivados se almacenen en Google Cloud. Puedes configurar trabajos programados para mover tus datos del clúster local a Google Cloud cuando alcancen una edad específica. Luego, puedes configurar todos tus trabajos que funcionen en los datos archivados en Google Cloud a fin de que nunca necesites sincronizar los cambios en tus clústeres locales.

Otra forma de dividir el sistema es mover todos los datos y trabajos de un proyecto o grupo de trabajo específico a Google Cloud y, a la vez, mantener otros trabajos en el entorno local. Así, puedes enfocarte en tus trabajos en lugar de crear sistemas complejos de sincronización de datos.

Es posible que tengas problemas de seguridad o logísticos que compliquen la forma en que conectas tu clúster local a Google Cloud. Una solución es usar una nube privada virtual conectada a tu red local mediante Cloud VPN.

En el siguiente diagrama, se muestra un ejemplo de configuración de nube híbrida:

Diagrama de una arquitectura típica de Hadoop de nube híbrida.

En la configuración de ejemplo, se usa Cloud VPN para conectar una VPC de Google Cloud a un clúster local. El sistema usa Dataproc dentro de la VPC para administrar clústeres persistentes que procesan datos provenientes del sistema local. Esto podría implicar la sincronización de datos entre los sistemas. Esos clústeres persistentes de Dataproc también transfieren datos provenientes del sistema local a los servicios de almacenamiento apropiados en Google Cloud. A modo de ilustración, en el ejemplo, se usa Cloud Storage, BigQuery y Bigtable para el almacenamiento, que son los destinos más comunes de los datos procesados por cargas de trabajo de Hadoop en Google Cloud.

La otra mitad de la solución de ejemplo muestra varios clústeres efímeros que se crean según sea necesario en la nube pública. Esos clústeres se pueden usar para muchas tareas, incluidas aquellas que recopilan y transforman datos nuevos. Los resultados de estos trabajos se almacenan en los mismos servicios de almacenamiento que usan los clústeres que se ejecutan en la VPC.

Diseña una solución nativa de la nube

En contraste, una solución nativa de la nube es sencilla. Debido a que ejecutas todos tus trabajos en Google Cloud con datos almacenados en Cloud Storage, evitas por completo la complejidad de la sincronización de datos, aunque debes tener cuidado sobre cómo tus diferentes trabajos usan los mismos datos.

En el siguiente diagrama, se muestra un ejemplo de un sistema nativo de la nube:

Diagrama de una arquitectura típica de Hadoop nativa de la nube

El sistema de ejemplo tiene algunos clústeres persistentes y algunos efímeros. Ambos tipos de clústeres comparten herramientas y recursos en la nube, incluidos el almacenamiento y la supervisión. Dataproc usa imágenes de máquina estandarizadas para definir configuraciones de software en las VM de un clúster. Puedes usar estas imágenes predefinidas como base para la configuración de VM que necesitas. El ejemplo muestra que la mayoría de los clústeres persistentes se ejecutan en la versión 1.1, mientras que uno se ejecuta en la versión 1.2. Puedes crear nuevos clústeres con instancias de VM personalizadas siempre que sea necesario. Esto te permite aislar los entornos de prueba y desarrollo de los datos y trabajos de producción vitales.

Los clústeres efímeros en el ejemplo ejecutan una variedad de trabajos. En este ejemplo, se muestra que Apache Airflow se ejecuta en Compute Engine y se usa para programar el trabajo con clústeres efímeros.

Trabajar con los servicios de Google Cloud

En esta sección, se analizan algunas consideraciones adicionales para migrar Hadoop a Google Cloud.

Reemplaza las herramientas de código abierto por los servicios de Google Cloud

Google Cloud ofrece muchos productos que puedes usar con tu sistema Hadoop. Usar un producto de Google Cloud a menudo puede tener más beneficios que usar el producto de código abierto equivalente en Google Cloud. Obtén más información sobre los productos y servicios de Google Cloud para descubrir la amplitud de lo que ofrece la plataforma.

Usa regiones y zonas

Debes comprender las repercusiones de la geografía y las regiones antes de configurar tus datos y trabajos. Muchos servicios de Google Cloud requieren que especifiques regiones o zonas en las que se asignen los recursos. La latencia de las solicitudes puede aumentar cuando se realizan desde una región diferente a la que tiene los recursos almacenados. Además, si los recursos del servicio y tus datos persistentes se encuentran en regiones diferentes, algunas llamadas a servicios de Google Cloud pueden copiar todos los datos requeridos de una zona a otra antes de su procesamiento. Esto puede tener un impacto serio en el rendimiento.

Configura la autenticación y los permisos

Tu control de los permisos en los servicios de Google Cloud suele ser menos detallado que el que tienes en tu entorno local de Hadoop. Asegúrate de comprender cómo funciona la administración de accesos en Google Cloud antes de comenzar la migración.

Identity and Access Management (IAM) administra el acceso a los recursos de la nube. Trabaja a partir de cuentas y funciones. Las cuentas identifican a un usuario o una solicitud (autenticación), y las funciones otorgadas a una cuenta dictan el nivel de acceso (autorización). La mayoría de los servicios de Google Cloud proporcionan su propio conjunto de funciones para ayudarte a ajustar los permisos. Como parte del proceso de planificación para la migración, debes conocer cómo interactúa IAM con Cloud Storage y Dataproc. Obtén información sobre los modelos de permisos de cada servicio adicional de Google Cloud a medida que lo agregas a tu sistema y considera cómo definir las funciones que operan en los servicios que usas.

Supervisa trabajos con Cloud Logging

Los trabajos de Google Cloud envían sus registros a Cloud Logging, en el que se puede acceder a los registros con facilidad. Puedes obtener los registros de las siguientes maneras:

Administra los nodos perimetrales con Compute Engine

Puedes usar Compute Engine para acceder a un nodo perimetral en un clúster de Hadoop en Dataproc. Al igual que en la mayoría de los productos de Google Cloud, tienes varias opciones de administración: la consola basada en la Web, la línea de comandos y las API web.

Usa los servicios de macrodatos de Google Cloud

Cloud Storage es la forma principal de almacenar datos no estructurados en Google Cloud, pero no es la única opción de almacenamiento. Podría ser más conveniente almacenar algunos de tus datos en productos diseñados de forma explícita para macrodatos.

Puedes usar Bigtable para almacenar grandes cantidades de datos dispersos. Bigtable es una API compatible con HBase que ofrece baja latencia y alta escalabilidad para adaptarse a tus trabajos.

Para el almacenamiento de datos, puedes usar BigQuery.

Pasos siguientes