Migra trabajos de Hadoop desde una ubicación local a Dataproc

En esta guía, se describe cómo trasladar tus trabajos de Apache Hadoop a Google Cloud con 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 tus 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 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 bucket 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 con 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 versiones de software de código abierto preinstaladas. Puedes ejecutar muchos trabajos solo 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 de tu clúster. Puedes usar acciones de inicialización a fin de crear secuencias de comandos que se ejecutan en los nodos cuando estos se crean.

Actualiza ubicaciones de datos (URI)

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

Si reorganizas tus datos como parte de la migración, registra todas las rutas de origen y destino para que puedas actualizar fácilmente tus trabajos a fin de que funcionen con la nueva organización de datos.

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

Cómo configurar clústeres para ejecutar tus trabajos

En el enfoque recomendado para ejecutar tus trabajos en Google Cloud, creas clústeres efímeros cuando los necesitas y los borras cuando terminan tus trabajos. Este enfoque te da mucha flexibilidad sobre cómo configurar los clústeres. Puedes utilizar configuraciones distintas para cada trabajo o crear varias configuraciones de clústeres estándar que sirvan para 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 a fin de ayudarte a decidir cómo proceder.

Cómo determinar el tamaño del clúster

Lo primero que necesitas hacer a fin de definir un nuevo clúster es decidir qué hardware virtual usarás para él. Puede resultar difícil calcular la configuración perfecta para el clúster, ya que cada trabajo tiene sus idiosincrasias y necesidades particulares. Prueba diferentes configuraciones a fin de encontrar los ajustes correctos para tu 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 el número 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 haces la migración. Puedes utilizar 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 es ajustar la configuración y supervisar el efecto que tiene en la ejecución del trabajo. A medida que comienzas a optimizar la configuración de tus trabajos, empezarás a entender mejor cómo abordar los trabajos adicionales en tu sistema.

Recuerda que puedes escalar tu clúster según lo necesitas; por ende, no debes contar con la especificación perfecta definida desde el comienzo.

Cómo elegir opciones de disco principal

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

Si tu trabajo requiere mucho disco y se ejecuta con lentitud en nodos individuales, puedes agregar más espacio al disco principal. Para trabajos que requieran mucho 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 contener todo el espacio que necesitas para la ejecución local. Tus directorios de ejecución local se distribuyen en todos los SSD que agregues.

Cómo utilizar nodos trabajadores interrumpibles

Puedes obtener poder de procesamiento de bajo costo para tus trabajos si agregas nodos trabajadores interrumpibles a tu clúster. Estos nodos utilizan máquinas virtuales interrumpibles.

Antes de pensar en usar los nodos interrumpibles, ten en cuenta que son poco confiables. Dataproc intenta manejar la interrupción sin problemas, pero los trabajos podrían fallar 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 perturben tu negocio.

Si decides utilizar 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 utilices en relación con los nodos estándar, mayores son las posibilidades de que el trabajo no cuente con nodos suficientes para completar la tarea. A fin de determinar la mejor proporción entre nodos interrumpibles y regulares para un trabajo, experimenta con proporciones diferentes y analiza los resultados.

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

Ejecuta trabajos

Dataproc proporciona múltiples interfaces que puedes usar para iniciar trabajos, las cuales 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 tus trabajos de Hadoop en Google Cloud.

Cómo obtener el resultado del trabajo

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 bucket 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 bucket de etapa de pruebas de Cloud Storage asociado con el clúster en el que ejecuta el trabajo.

Usa trabajos reiniciables

Cuando envías un trabajo, puedes configurarlo para que se reinicie automáticamente si se encuentra con un problema. Esta opción es útil para trabajos que dependen de recursos o circunstancias altamente variables. Por ejemplo, los trabajos que transmiten datos en canales potencialmente poco confiables (como la Internet pública) son especialmente propensos a errores aleatorios debido a errores de tiempo de espera y problemas similares de la red. Ejecuta trabajos como reiniciables si puedes imaginar situaciones en las que el trabajo podría tener un error, pero que se ejecutaría correctamente poco tiempo después.

Escala el clúster

Dataproc facilita la tarea de agregar o quitar nodos de tu clúster en cualquier momento, incluso mientras el trabajo se ejecuta. En la documentación de Dataproc, se incluye 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 van a borrar tienen tiempo de completar el procesamiento en curso.

Cómo administrar trabajos en el tiempo

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

  • Utiliza 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 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 tus depósitos de Cloud Storage para separar diferentes tipos de trabajos. Agrupar tus datos en depósitos que se corresponden con tu estructura comercial o tus áreas funcionales también puede facilitar la administración de permisos.
  • Define clústeres para trabajos individuales o para grupos de trabajos estrechamente relacionados. Es mucho más fácil actualizar la configuración para tus clústeres efímeros si utilizas cada configuración solo en trabajos de buen alcance.

¿Qué sigue?