Migra trabajos locales de Hadoop a Dataproc

En esta guía, se describe cómo trasladar los trabajos de Apache Hadoop a Google Cloud mediante el uso de Dataproc.

Esta es la tercera de tres guías en las que se describe cómo migrar desde Hadoop local:

Ejecuta trabajos de Hadoop en Google Cloud

Puedes usar Dataproc para ejecutar la mayoría de los trabajos de Hadoop en Google Cloud. En la siguiente lista, se resume el procedimiento básico:

  1. Actualiza el trabajo para que apunte a los datos persistentes almacenados en Cloud Storage.

  2. Crea un clúster de Dataproc en el que se ejecutará el trabajo. Este tipo de clúster temporario y de un solo uso se llama clúster efímero.

  3. Envía el trabajo al clúster efímero.

  4. Tienes la opción de supervisar los registros del trabajo mediante Cloud Logging o Cloud Storage. Los registros se capturan en Cloud Storage de forma predeterminada, mediante un depósito de etapa de pruebas que especificas cuando creas el clúster.

  5. Controla el resultado de tu trabajo en Cloud Storage.

  6. Cuando se complete tu trabajo, borra el clúster.

Trabajos compatibles

Dataproc ejecuta Hadoop, por lo que se admiten muchos tipos de trabajos de forma automática. Cuando creas un clúster mediante Dataproc, las siguientes tecnologías se configuran de forma predeterminada:

  • Hadoop
  • Spark
  • Hive
  • Pig

Dataproc proporciona varias versiones de imágenes de máquina con distintas versiones de software de código abierto preinstaladas. Puedes ejecutar muchos trabajos con el software preinstalado en una imagen. Para algunos trabajos, es posible que debas instalar otros paquetes. Dataproc proporciona un mecanismo llamado acciones de inicialización, que te permite personalizar el software que se ejecuta en los nodos del clúster. Puedes usar acciones de inicialización para crear secuencias de comandos que se ejecuten en todos los nodos cuando estos se creen.

Actualiza ubicaciones de datos (URI)

El conector de Cloud Storage, que está preinstalado en los nodos del clúster de Dataproc, permite que los trabajos usen Cloud Storage como un sistema de archivos compatible con Hadoop (HCFS). Almacena los datos en Cloud Storage para que puedas aprovechar el conector. Si haces esto, el único cambio necesario para los trabajos es la actualización de los URI, que requiere que se reemplace hdfs:// por gs://.

Si reorganizas los datos como parte de la migración, registra todas las rutas de origen y destino, de forma que puedas actualizar con facilidad los trabajos para que funcionen con la nueva organización de los datos.

Si bien es posible almacenar los datos en HDFS en clústeres persistentes en la nube, esto no se recomienda. Puedes obtener más información acerca de cómo trasladar los datos en la guía sobre la migración de datos.

Configura clústeres para ejecutar los trabajos

En el enfoque recomendado para la ejecución de los trabajos en Google Cloud, creas clústeres efímeros cuando los necesitas y los borras cuando se finalizan los trabajos. Este enfoque te da mucha flexibilidad en la forma en que configuras los clústeres. Puedes usar distintos parámetros de configuración en cada trabajo o crear varios parámetros de configuración de clústeres estándar que entreguen grupos de trabajos.

Puede encontrar los pasos básicos para crear clústeres en la documentación de Dataproc. En el resto de esta sección, se describen algunas consideraciones importantes sobre la configuración del clúster para ayudarte a decidir cómo proceder.

Determina el tamaño del clúster

Lo primero que necesitas hacer para definir un clúster nuevo es decidir qué hardware virtual usarás. Puede resultar difícil calcular la configuración perfecta para el clúster, ya que cada trabajo tiene idiosincrasias y necesidades particulares. Prueba diferentes parámetros de configuración a fin de encontrar los adecuados para el trabajo.

Cuando configuras un clúster, debes determinar, como mínimo, los siguientes parámetros:

  • Cuántos nodos se usarán
  • El tipo de máquina virtual que usarás para el nodo principal
  • El tipo de máquina virtual que usarás para los nodos trabajadores

Los tipos de nodos se definen según la cantidad de CPU virtuales y la cantidad de memoria que tienen disponible. Las definiciones corresponden a los tipos de máquinas de Compute Engine. Por lo general, puedes encontrar un tipo de nodo que se corresponda con la configuración de los nodos locales desde los que realizas la migración. Puedes usar esa equivalencia como punto de partida y configurar un clúster que sea similar a tu clúster local. A partir de eso, el mejor enfoque consiste en ajustar la configuración y supervisar el efecto que tiene en la ejecución del trabajo. A medida que comiences a optimizar la configuración de los trabajos, empezarás a entender mejor cómo abordar los trabajos adicionales en el sistema.

Recuerda que puedes escalar el clúster según sea necesario, por lo que no necesitas definir la especificación perfecta desde el comienzo.

Elige opciones de disco principal

Puedes especificar el tamaño del disco principal que usan los nodos trabajadores. Las opciones correctas para un clúster dependen de los tipos de trabajos que ejecutarás en él. Usa el valor predeterminado y evalúa los resultados, a menos que sepas que los trabajos tienen demandas poco comunes del uso del disco principal.

Si el trabajo requiere un uso intensivo del disco y se ejecuta con lentitud en nodos individuales, puedes agregar más espacio al disco principal. Para los trabajos que requieran un uso intensivo del disco, en especial los que tengan varias operaciones individuales de lectura y escritura, es posible que puedas mejorar el funcionamiento mediante la incorporación de SSD locales. Agrega suficientes SSD a fin de tener todo el espacio que necesitas para la ejecución local. Los directorios de ejecución local se distribuyen en todos los SSD que agregues.

Usa nodos trabajadores interrumpibles

Puedes obtener una potencia de procesamiento de bajo costo para los trabajos si agregas nodos trabajadores interrumpibles al clúster. Estos nodos usan máquinas virtuales interrumpibles.

Antes de decidir usar nodos interrumpibles, ten en cuenta que son poco confiables. Dataproc intenta manejar la interrupción sin problemas, pero puede que los trabajos fallen si pierden demasiados nodos. Usa nodos interrumpibles solo en trabajos tolerantes a errores o con prioridad lo bastante baja como para que los errores ocasionales en el trabajo no afecten las operaciones de tu empresa.

Si decides usar nodos trabajadores interrumpibles, ten en cuenta la proporción entre nodos interrumpibles y normales. No existe una fórmula universal para obtener los mejores resultados, pero, en general, mientras más nodos interrumpibles uses en relación con los nodos estándar, mayores serán las posibilidades de que el trabajo no cuente con suficientes nodos para completar la tarea. A fin de determinar la mejor proporción entre nodos interrumpibles y regulares para un trabajo, experimenta con distintas proporciones y analiza los resultados.

Ten en cuenta que los SSD no están disponibles en los nodos trabajadores interrumpibles. Si usas SSD en los nodos exclusivos, cualquier nodo trabajador interrumpible que uses coincidirá con los demás aspectos de los nodos exclusivos, pero no tendrá SSD disponibles.

Ejecuta trabajos

Dataproc proporciona varias interfaces que puedes usar para iniciar trabajos; estas se describen en la documentación del producto. En esta sección, se describen las opciones y operaciones que debes tener en cuenta cuando ejecutes los trabajos de Hadoop en Google Cloud.

Obtén los resultados de los trabajos

Los trabajos que ejecutas en Dataproc suelen tener varios tipos de resultados. Tu trabajo podría escribir diferentes tipos de resultados directamente, por ejemplo, en archivos en un depósito de Cloud Storage o en otro producto en la nube, como BigQuery. Dataproc también recopila registros y resultados de la consola, y los coloca en el depósito de etapa de pruebas de Cloud Storage asociado con el clúster en el que ejecutas el trabajo.

Usa trabajos reiniciables

Cuando envías un trabajo, puedes configurarlo para que se reinicie de forma automática si se detecta un problema. Esta opción es útil para los trabajos que dependen de recursos o circunstancias muy variables. Por ejemplo, los trabajos que transmiten datos en canales que pueden ser poco confiables (como la Internet pública) son especialmente propensos a errores aleatorios debido a errores de tiempo de espera y problemas de red similares. Ejecuta un trabajo como reiniciable si puedes prever situaciones en las que el trabajo genere un error, pero se ejecute de forma correcta poco tiempo después.

Escala el clúster

Dataproc facilita la tarea de agregar o quitar nodos en el clúster en cualquier momento, incluso mientras el trabajo se ejecuta. En la documentación de Dataproc, se incluyen instrucciones detalladas para escalar el clúster. El escalamiento incluye la opción del retiro de servicio ordenado de los nodos. Con esta opción, los nodos que se borrarán tienen tiempo de completar el procesamiento en curso.

Administra trabajos en el tiempo

Tratar con trabajos individuales no suele ser complejo, pero el sistema de Hadoop puede incluir decenas o cientos de trabajos. Con el paso del tiempo, la cantidad de registros, archivos de resultados y otra información relacionada con cada trabajo se multiplica, lo que puede dificultar la tarea de encontrar información específica. Te presentamos algunas sugerencias para facilitarte la administración de los trabajos en el futuro:

  • Usa etiquetas personalizadas para identificar trabajos, clústeres y otros recursos. Usar etiquetas facilita el uso de un filtro para encontrar recursos más adelante. Dataproc es compatible con las etiquetas personalizadas que usan el sistema estándar de etiquetado de Google Cloud. Por lo tanto, etiquetar un recurso puede ayudarte a administrarlo en otros servicios de GCP.
  • Organiza los depósitos de Cloud Storage para separar diferentes tipos de trabajos. La agrupación de los datos en depósitos que se correspondan con la estructura empresarial o las áreas funcionales también puede facilitar la administración de los permisos.
  • Define clústeres para trabajos individuales o para grupos de trabajos muy relacionados. Es mucho más fácil actualizar la configuración de los clústeres efímeros si usas cada configuración solo para trabajos con un alcance bien definido.

Próximos pasos