Migrer des tâches Hadoop sur site vers Dataproc

Ce guide explique comment déplacer vos tâches Apache Hadoop vers Google Cloud à l'aide de Dataproc.

Ce guide est le dernier d'une série de trois décrivant comment effectuer la migration de tâches Hadoop sur site :

Exécuter des tâches Hadoop sur Google Cloud

Vous pouvez utiliser Dataproc pour exécuter la plupart de vos tâches Hadoop sur Google Cloud. La liste suivante récapitule la procédure de base :

  1. Mettre à jour votre tâche pour qu'elle pointe vers vos données persistantes stockées dans Cloud Storage

  2. Créez un cluster Dataproc sur lequel exécuter votre tâche. (ce type de cluster temporaire à usage unique est appelé cluster éphémère)

  3. Envoyer votre tâche au cluster éphémère

  4. Vous pouvez éventuellement surveiller vos journaux de tâches à l'aide de Cloud Logging ou de Cloud Storage. (par défaut, les journaux sont capturés dans Cloud Storage à l'aide du bucket de préproduction que vous spécifiez à la création du cluster)

  5. Vérifier la sortie de votre tâche dans Cloud Storage

  6. Supprimer le cluster lorsque votre tâche est terminée

Tâches acceptées

Dataproc exécute Hadoop. De nombreux types de tâches sont ainsi automatiquement acceptés. Lorsque vous créez un cluster avec Dataproc, les technologies suivantes sont configurées par défaut :

  • Hadoop
  • Spark
  • Hive
  • Pig

Dataproc fournit plusieurs versions d'images système avec différentes versions de logiciels Open Source préinstallées. Les logiciels préconfigurés sur une image vous permettent déjà d'exécuter de nombreuses tâches. Pour certaines, vous pouvez être amené à installer d'autres packages. Dataproc fournit un mécanisme appelé actions d'initialisation, qui vous permet de personnaliser le logiciel exécuté sur les nœuds de votre cluster. Vous pouvez utiliser des actions d'initialisation pour générer des scripts qui s'exécutent sur chaque nœud à leur création.

Mettre à jour des emplacements de données (URI)

Le connecteur Cloud Storage, préinstallé sur les nœuds de cluster Dataproc, permet à vos tâches d'utiliser Cloud Storage en tant que système de fichiers compatible Hadoop. Stockez vos données dans Cloud Storage afin de pouvoir tirer parti de ce connecteur. Si vous le faites, la seule modification nécessaire sur vos tâches consiste à mettre à jour les URI, en remplaçant hdfs:// par gs://.

Si vous réorganisez vos données dans le cadre de votre migration, notez tous les chemins de source et de destination afin de pouvoir facilement mettre à jour vos tâches en fonction de la nouvelle organisation.

Il est possible de stocker vos données HDFS dans des clusters persistants dans le cloud, mais cela n'est pas recommandé. Pour en savoir plus sur le déplacement de vos données, consultez le guide de migration des données.

Configurer des clusters pour exécuter vos tâches

Dans l'approche recommandée pour exécuter vos tâches sur Google Cloud, vous créez des clusters éphémères lorsque vous en avez besoin et les supprimez une fois vos tâches terminées. Cette approche vous donne une grande flexibilité pour configurer de vos clusters. Vous pouvez utiliser une configuration différente pour chaque tâche ou créer plusieurs configurations de cluster standards qui gèrent des groupes de tâches.

Découvrez les étapes de base pour créer des clusters dans la documentation Dataproc. Le reste de cette section décrit certaines des considérations importantes relatives à la configuration du cluster dont vous devez tenir compte.

Dimensionner votre cluster

La première étape dans la définition d'un nouveau cluster consiste à choisir le matériel virtuel à utiliser. Il peut être difficile de calculer la configuration de cluster parfaite, car chaque tâche possède ses propres besoins et particularités. Testez différentes configurations pour trouver celle qui correspond le mieux à votre tâche.

Lorsque vous configurez un cluster, vous devez au minimum déterminer :

  • combien de nœuds utiliser ;
  • le type de machine virtuelle à utiliser pour votre nœud principal (maître) ;
  • le type de machine virtuelle à utiliser pour vos nœuds de calcul.

Les types de nœuds sont définis par le nombre de processeurs virtuels et la quantité de mémoire disponible. Les définitions correspondent aux types de machines Compute Engine. Vous pouvez généralement trouver un type de nœud qui correspond à la configuration des nœuds sur site que vous cherchez à déplacer. Vous pouvez utiliser cette équivalence comme point de départ pour configurer un cluster semblable à votre cluster local. Dès lors, la meilleure approche consiste à ajuster la configuration et à surveiller l'effet des ajustements sur l'exécution de la tâche. À mesure que vous optimisez la configuration de vos tâches, vous commencerez à acquérir une certaine intuition sur la meilleure façon d'aborder d'autres tâches dans votre système.

N'oubliez pas que vous pouvez dimensionner votre cluster suivant vos besoins. Il n'est donc pas nécessaire de définir les spécifications parfaites dès le départ.

Choisir les options du disque principal

Vous pouvez spécifier la taille du disque principal utilisé par vos nœuds de calcul. Les options optimales pour un cluster dépendent des types de tâches que vous comptez y exécuter. Utilisez la valeur par défaut et évaluez les résultats, à moins que vous ne sachiez déjà que vos tâches ont des exigences inhabituelles en matière d'utilisation du disque principal.

Si votre tâche est gourmande en espace disque et qu'elle s'exécute lentement sur des nœuds individuels, vous pouvez ajouter davantage d'espace disque principal. Pour les tâches particulièrement exigeantes, en particulier celles comportant de nombreuses opérations de lecture et d'écriture individuelles, vous pouvez améliorer les performances en ajoutant des disques SSD locaux. Prévoyez suffisamment de disques SSD pour héberger tout l'espace nécessaire à l'exécution locale. Vos répertoires d'exécution locaux sont répartis sur le nombre de disques SSD ajoutés.

Utiliser des nœuds de calcul préemptifs

L'ajout de nœuds de calcul préemptifs à votre cluster lui confère de la puissance de traitement à faible coût. Ces nœuds utilisent des machines virtuelles préemptives.

Tenez compte du manque de fiabilité inhérent aux nœuds préemptifs avant de faire le choix de les utiliser. Dataproc tente de gérer facilement la préemption, mais les tâches peuvent échouer si elles perdent trop de nœuds. Utilisez des nœuds préemptifs uniquement pour les tâches tolérantes aux pannes ou dont la priorité est suffisamment basse pour qu'un échec occasionnel ne perturbe pas votre activité.

Si vous décidez d'utiliser des nœuds de calcul préemptifs, tenez compte du ratio entre nœuds standards et nœuds préemptifs. Il n'existe pas de formule universelle pour obtenir les meilleurs résultats, mais en général, plus vous utilisez de nœuds préemptifs par rapport aux nœuds standards, plus le risque augmente de manquer de nœuds pour effectuer la tâche. Vous pouvez déterminer le ratio optimal entre nœuds préemptifs et nœuds standards pour une tâche donnée en testant différents ratios et en analysant les résultats.

Notez que les disques SSD ne sont pas disponibles sur les nœuds de calcul préemptifs. Si vous utilisez des disques SSD sur vos nœuds dédiés, les nœuds de calcul préemptifs éventuels correspondront en tous points aux nœuds dédiés, à l'exception des disques SSD (qui ne sont pas disponibles).

Tâches en cours d'exécution

Dataproc fournit plusieurs interfaces que vous pouvez utiliser pour lancer vos tâches. Elles sont toutes décrites dans la documentation du produit. Cette section décrit les options et les opérations à prendre en compte lorsque vous exécutez vos tâches Hadoop sur Google Cloud.

Obtenir le résultat de la tâche

Les tâches que vous exécutez sur Dataproc ont généralement plusieurs types de sorties. Votre tâche peut écrire directement plusieurs types de sorties, par exemple des fichiers dans un bucket Cloud Storage ou dans un autre produit cloud comme BigQuery. Dataproc collecte également les journaux et les résultats de la console et les place dans le bucket de préproduction Cloud Storage associé au cluster sur lequel vous exécutez la tâche.

Utiliser des tâches redémarrables

Lorsque vous envoyez une tâche, vous pouvez la configurer de manière à redémarrer automatiquement en cas de problème. Cette option est utile pour les tâches qui dépendent de ressources ou de circonstances très variables. Par exemple, les tâches qui diffusent des données en continu sur des canaux potentiellement peu fiables (tels que l'Internet public) sont particulièrement exposées à des défaillances aléatoires dues à des erreurs d'expiration de délai et autres problèmes réseau similaires. Configurez les tâches comme redémarrables si votre tâche est susceptible d'échouer dans un premier temps, puis d'aboutir peu de temps après.

Dimensionner votre cluster

Dataproc facilite l'ajout ou la suppression de nœuds sur votre cluster à tout moment, y compris lorsque votre tâche est en cours d'exécution. La documentation de Dataproc inclut des instructions détaillées pour le scaling de votre cluster. Le scaling inclut une option de mise hors service concertée des nœuds. Avec cette option, les nœuds à supprimer ont le temps de terminer le traitement en cours.

Gérer les tâches au fil du temps

Il n'est généralement pas compliqué de traiter des tâches individuelles, mais un système Hadoop peut comporter des dizaines, voire des centaines de tâches. Au fil du temps, il y a prolifération du nombre de journaux, de fichiers de sortie et d'autres informations associées à chaque tâche, ce qui peut rendre difficile la recherche d'une information individuelle. Voici certaines actions que vous pouvez entreprendre pour faciliter la gestion future de vos tâches :

  • Utilisez des libellés personnalisés pour identifier les tâches, les clusters et les autres ressources. Les libellés facilitent l'utilisation d'un filtre pour rechercher ultérieurement des ressources. Dataproc accepte les libellés personnalisés exploitant le système de libellés Google Cloud standard. Ainsi, lorsque vous libellez une ressource, cela peut vous aider à la gérer dans d'autres services GCP.
  • Organisez vos buckets Cloud Storage de manière à séparer les différents types de tâches. Regrouper vos données dans des buckets correspondant à la structure de votre entreprise ou à vos domaines d'activité peut également faciliter la gestion des autorisations.
  • Définissez des clusters pour des tâches individuelles ou pour des groupes de tâches étroitement liées. Il est beaucoup plus facile de mettre à jour la configuration de vos clusters éphémères si vous utilisez chaque configuration spécifiquement pour des tâches au champ d'application bien défini.

Étapes suivantes