Migra la infraestructura local de Hadoop a Google Cloud Platform

Esta guía proporciona una descripción general de cómo trasladar tu sistema de Apache Hadoop local a Google Cloud Platform (GCP). Se describe un proceso de migración que no solo traslada tu trabajo de Hadoop a GCP, 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 se presentan algunos conceptos fundamentales que debes comprender para traducir tu configuración de Hadoop a GCP.

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

Los beneficios de migrar a GCP

Hay muchas maneras en que el uso de GCP puede ahorrarte tiempo, dinero y esfuerzo en comparación con el uso de una solución de 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

GCP incluye Cloud Dataproc, que es un entorno administrado de Hadoop y Spark. Puedes usar Cloud Dataproc para ejecutar la mayoría de tus trabajos existentes con modificaciones mínimas, por lo que no necesitas dejar todas las herramientas de Hadoop que ya conoces.

Hardware y configuración administrados

Cuando ejecutas Hadoop en GCP, no necesitas preocuparte por el hardware físico. Solo debes especificar la configuración de tu clúster y Cloud Dataproc asignará los recursos por ti. 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 Cloud Dataproc, gran parte de ese trabajo lo administra el control de versiones de Cloud Dataproc.

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 trasladas a GCP, puedes enfocarte en tareas individuales y crear 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 tu migración

La migración de una solución de Hadoop local a GCP 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 trasladas tu sistema Hadoop a GCP, puedes reducir la complejidad administrativa. Sin embargo, para lograr esa simplificación y obtener el procesamiento más eficiente en GCP con el costo mínimo, debes volver a pensar cómo estructurar tus datos y trabajos.

Debido a que Cloud Dataproc ejecuta Hadoop en GCP, el uso de un clúster de Cloud 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 con Cloud 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 para usarlos con otros productos de GCP.
  • Aumentar o reemplazar algunas de tus herramientas basadas en código abierto con otros servicios de GCP relacionados puede ser más eficiente o económico para casos prácticos particulares.
  • Usar un clúster de Cloud Dataproc único y persistente para tus trabajos es más difícil de administrar que cambiar a clústeres orientados que entregan trabajos o áreas de trabajo individuales.

La forma más rentable y flexible de migrar tu sistema Hadoop a GCP es dejar de pensar en términos de clústeres grandes, persistentes y de propósitos múltiples, 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.

El siguiente diagrama muestra una migración hipotética de un sistema local a un modelo efímero en GCP.

Diagrama que ilustra cómo se pueden reorganizar los clústeres locales cuando se migra a GCP.

El ejemplo traslada cuatro trabajos que se ejecutan en dos clústeres locales a Cloud Dataproc. Los clústeres efímeros que se usan a fin de ejecutar los trabajos en GCP se definen para 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. Cloud Dataproc te ayuda a definir con rapidez múltiples 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 depósitos y el segundo clúster se traslada a un solo depósito. 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 GCP. 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 GCP:

  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 los paradigmas de GCP y 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 GCP cuando sea apropiado

Realiza el traslado a un modelo efímero

El mayor cambio en tu enfoque entre ejecutar un flujo de trabajo local de Hadoop y ejecutar el mismo flujo de trabajo en GCP es el cambio de los clústeres persistentes y monolíticos a los clústeres efímeros y especializados. 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 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.
  • Te permite usar con facilidad tus datos con toda la gama de productos de GCP.
  • Es mucho menos costoso que mantener tus datos en HDFS en un clúster persistente de Cloud Dataproc.

Con tus datos almacenados de forma persistente en Cloud Storage, puedes ejecutar tus trabajos en clústeres efímeros de Hadoop que administra Cloud Dataproc.

En algunos casos, puede ser mejor trasladar los datos a otra tecnología de GCP, como BigQuery o Cloud 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

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

  • Puedes usar diferentes configuraciones de clúster para trabajos individuales, lo que borra la carga de administrar herramientas entre trabajos.
  • Puedes escalar clústeres para adaptarse a trabajos individuales o grupos de trabajos.
  • Solo pagas por los recursos que usan tus trabajos.
  • No necesitas mantener los clústeres a lo largo del tiempo, ya que se configuran de nuevo cada vez que los usas.
  • No necesitas mantener una infraestructura separada para el desarrollo, las pruebas y la producción. Puedes usar las mismas definiciones para crear tantas versiones diferentes de un clúster como sea necesario y cuando las necesites.

Puedes usar las acciones de inicialización de Cloud Dataproc para definir la configuración de los 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. Usa los resultados de tu trabajo como sea necesario.

  5. Mira los registros en Stackdriver o Cloud Storage.

Este proceso se muestra en el diagrama siguiente:

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. Traslada una parte de tus datos a GCP.

  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 picos de actividad suele proporcionar experiencia con el escalamiento en GCP al principio de tu plan de migración. Esto puede servirte cuando comiences a migrar trabajos más vitales.

El siguiente diagrama 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 reabastecimiento se ejecutan en clústeres efímeros de Cloud Dataproc. Además del reabastecimiento, puedes usar clústeres efímeros en GCP a fin de experimentar y crear pruebas de concepto para el trabajo futuro.

Planifica con la migración completa en mente

Hasta ahora, en esta guía se dio por sentado que tu objetivo es trasladar todo tu sistema Hadoop de las instalaciones locales a GCP. Un sistema Hadoop que se ejecuta por completo en GCP es más fácil de administrar que uno que funciona en la nube y en las instalaciones locales. 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 en las instalaciones locales y esos sistemas no pueden interactuar con GCP debido a restricciones técnicas o empresariales.

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 GCP

  3. Almacenamiento de datos centralizado en GCP

  4. Componentes nativos de la nube que funcionan en datos en GCP

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, puedes tener una solución híbrida en la que solo los datos archivados se almacenan en GCP. Puedes configurar trabajos programados para trasladar tus datos del clúster local a GCP cuando alcancen una antigüedad específica. Luego, puedes configurar todos tus trabajos que funcionan con los datos archivados en GCP para que nunca tengas que sincronizar los cambios en tus clústeres locales.

Otra forma de dividir tu sistema es trasladar todos los datos y el trabajo de un proyecto o grupo de trabajo específico a GCP mientras mantienes otros trabajos en las instalaciones locales. Así, puedes enfocarte en tus trabajos en lugar de crear sistemas complejos de sincronización de datos.

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

El siguiente diagrama muestra un ejemplo de configuración de nube híbrida:

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

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

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 GCP con datos almacenados en Cloud Storage, evitas la complejidad de la sincronización de datos por completo, aunque aún debes tener cuidado en cómo los diferentes trabajos usan los mismos datos.

El siguiente diagrama muestra un ejemplo de un sistema nativo de la nube:

Diagrama de una típica arquitectura 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. Cloud Dataproc usa imágenes de máquina estandarizadas para definir configuraciones de software en VM dentro 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. Este ejemplo muestra que Apache Airflow se ejecuta en Compute Engine y se usa para programar el trabajo con clústeres efímeros.

Trabaja con servicios de GCP

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

Reemplaza herramientas de código abierto por servicios de GCP

GCP ofrece muchos productos que puedes usar con tu sistema Hadoop. Usar un producto de GCP a menudo puede tener ventajas en comparación con la ejecución en GCP del producto de código abierto equivalente. Obtén información sobre los productos y servicios de GCP 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 GCP requieren que especifiques regiones o zonas para asignar 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 están ubicados en regiones diferentes, algunas llamadas a los servicios de GCP podrían copiar todos los datos requeridos de una zona a otra antes de procesarlos. Esto puede tener un impacto serio en el rendimiento.

Configura la autenticación y los permisos

Es probable que tu control sobre los permisos en los servicios de GCP sea menos detallado que los que usas en tu entorno de Hadoop local. Asegúrate de comprender cómo funciona la administración de acceso en GCP antes de comenzar tu migración.

Cloud Identity and Access Management (Cloud IAM) administra el acceso a los recursos de la nube sobre la base 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 GCP proporcionan su propio conjunto de funciones para ayudarte a ajustar los permisos. Como parte del proceso de planificación de tu migración, debes conocer cómo interactúa Cloud IAM con Cloud Storage y Cloud Dataproc. Obtén información sobre los modelos de permisos de cada servicio de GCP adicional a medida que lo agregues a tu sistema y considera cómo definir las funciones en los servicios que usas.

Supervisa los trabajos con Stackdriver Logging

Tus trabajos de GCP envían sus registros a Logging para un acceso fácil. Puedes obtener tus registros de las maneras siguientes:

Administra tus nodos perimetrales con Compute Engine

Puedes usar Compute Engine para acceder a un nodo perimetral en un clúster de Hadoop de Cloud Dataproc. Como ocurre con la mayoría de los productos de GCP, tienes múltiples opciones para la administración: a través de la consola basada en la Web, desde la línea de comandos y a través de las API web.

Usa los servicios de macrodatos de GCP

Cloud Storage es la forma principal de almacenar datos no estructurados en GCP, 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 Cloud Bigtable para almacenar grandes cantidades de datos dispersos. Cloud 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

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Cómo migrar Hadoop a GCP