Définition de connexions de contexte Hadoop intelligentes

EnrichVersion
6.5
EnrichProdName
Talend Data Fabric
Talend Real-Time Big Data Platform
Talend Open Studio for Big Data
Talend Big Data
task
Création et développement > Création de Jobs > Distributions Hadoop
EnrichPlatform
Studio Talend

Configuration de connexions à Hadoop en fonction du contexte

La configuration d'une connexion à une distribution Hadoop donnée dans le référentiel vous permet d'éviter de configurer cette connexion à chaque fois que vous avez besoin de l'utiliser dans vos Jobs.

Lorsque vous définissez cette connexion, vous pouvez contextualiser les paramètres de connexion en utilisant des valeurs issues de différents environnements Hadoop, comme des environnements de tests et de production, afin d'ajuster la connexion et les Jobs utilisant la connexion à des environnements lors de l'exécution en une fois.

La configuration de sécurité, comme les paramètres Kerberos, ne peut pas être contextualisée. Par conséquent, assurez-vous que les valeurs que vous utilisez pour la sécurité fonctionnent dans tous les environnements concernés, y compris les environnements parmi lesquels la connexion Hadoop passe.

Si elles sont disponibles dans votre Studio, les propriétés avancées de Spark et les propriétés avancées de Hadoop que vous définissez ne peuvent pas non plus être contextualisées. En conséquence, assurez-vous que ces propriétés sont valides pour tous les environnements concernés, y compris les environnements parmi lesquels la connexion Hadoop passe.

Définition de la connexion à Hadoop

Vous devez tout d'abord définir la connexion à un environnement Hadoop donné.

Dans cet article, une distribution Cloudera est utilisée à titre d'exemple.

Avant de commencer

  • Vérifiez que la machine cliente sur laquelle est installé le Studio Talend peut reconnaître les noms d'hôtes des nœuds du cluster Hadoop à utiliser. Dans cet objectif, ajoutez les mappings des entrées adresse IP/nom d'hôte pour les services de ce cluster Hadoop dans le fichier hosts de la machine cliente.

    Par exemple, si le nom d'hôte du serveur du NameNode Hadoop est talend-cdh550.weave.local, et son adresse IP est 192.168.x.x, l'entrée du mapping est la suivante : 192.168.x.x talend-cdh550.weave.local.

  • Le cluster Hadoop à utiliser a été correctement installé et est en cours de fonctionnement.

  • La perspective Integration est active.

  • Cloudera est l'exemple de distribution de cet article. Si vous utilisez une distribution différente, vous devez garder à l'esprit les prérequis particuliers expliqués comme suit :
    • Si vous devez vous connecter à MapR à partir du Studio, assurez-vous d'avoir installé le client MapR dans une machine où le Studio est stocké et d'avoir ajouté la bibliothèque du client MapR client à la variable PATH de cette machine. Selon la documentation MapR, la ou les bibliothèques d'un client MapR correspondante(s) à chaque version de système d'exploitation peut ou peuvent être trouvée(s) sous MAPR_INSTALL\/hadoop\hadoop-VERSION/lib/native. Par exemple, la bibliothèque pour Windows est \lib\native\MapRClient.dll dans le fichier .jar client MapR. Pour plus d'informations, consultez le site de MapR : http://www.mapr.com/blog/basic-notes-on-configuring-eclipse-as-a-hadoop-development-environment-for-mapr (en anglais).

    • Si vous devez vous connecter à un cluster Google Dataproc, définissez le chemin d'accès du fichier d'identifiants de Google associé au compte du service à utiliser afin que la fonctionnalité Check service de l'assistant de la métadonnée puisse vérifier votre configuration.

      Pour plus d'informations concernant la définition de la variable d'environnement, consultez Getting Started with Authentication (en anglais) de la documentation Google.

Procédure

  1. Dans l'arborescence Repository de votre Studio, développez Metadata et cliquez-droit sur Hadoop cluster.
  2. Sélectionnez Create Hadoop cluster dans le menu contextuel pour ouvrir l'assistant [Hadoop cluster connection].
  3. Renseignez les informations génériques de cette connexion, comme Name et Description, cliquez sur Next pour ouvrir la fenêtre [Hadoop Configuration Import Wizard] qui vous permet de sélectionner la distribution à utiliser et le mode manuel et automatique pour configurer cette connexion.
    • Retrieve configuration from Ambari or Cloudera : si vous utilisez Hortonworks Data Platform ou un cluster Cloudera CDH et que votre cluster contient sa plateforme de gestion spécifique : Hortonworks Ambari pour Hortonworks Data Platform et Cloudera Manager pour Cloudera CDH, cochez cette case pour importer directement la configuration.

    • Import configuration from local files : lorsque vous avez obtenu ou que vous pouvez obtenir les fichiers de configuration (principalement les fichiers *-site.xml), par exemple, via l'administrateur du cluster Hadoop ou directement téléchargés à partir du service de gestion de cluster basé Web, utilisez cette option pour importer les propriétés directement à partir de ces fichiers.

    • Enter manually Hadoop services : cliquez sur Finish et saisissez manuellement les paramètres de connexion.

    Avec l'approche automatique ou avec l'approche manuelle, les paramètres que vous devez définir sont les suivants :
    • Namenode URI : saisissez l'URI de la machine NameNode du cluster à utiliser.

    • Resource Manager et Resource Manager scheduler : saisissez respectivement l'URI pointant vers la machine utilisée par le service Resource Manager de votre cluster et l'adresse de son ordonnanceur.

    • Job history : saisissez l'emplacement du serveur JobHistory de votre cluster. Cela permet aux informations métriques du Job courant d'être stockées dans ce serveur JobHistory.

    • Staging directory : saisissez le répertoire défini dans votre cluster Hadoop pour les fichiers temporaires créés par des programmes en cours d'exécution. Ce répertoire peut généralement être trouvé sous la propriété yarn.app.mapreduce.am.staging-dir dans les fichiers de configuration comme yarn-site.xml ou mapred-site.xml de votre distribution.

    • Use datanode hostname : cochez cette case pour permettre au Job d'accéder aux nœuds de données via leurs hébergeurs. Cela configure la propriété dfs.client.use.datanode.hostname à true.

    • Le champ User name est disponible lorsque vous n'utilisez pas Kerberos pour vous authentifier. Dans ce champ, saisissez votre identifiant pour cette distribution. Si vous laissez le champ vide, le nom de la machine hébergeant le Studio sera utilisé.

  4. Vérifiez que votre cluster est sécurisé et gardez à l'esprit que la configuration de sécurité ne peut pas être contextualisée.

    Si vous accédez au cluster Hadoop s'exécutant avec la sécurité Kerberos, cochez cette case. Saisissez les noms des principaux Kerberos pour le service du ResourceManager et le service du JobHistory dans les champs qui s'affichent. Cela vous permet d'utiliser votre identifiant pour vous authentifier par rapport aux informations stockées dans Kerberos. Ces principaux se trouvent dans les fichiers de configuration de votre distribution, comme yarn-site.xml et mapred-site.xml.

    Si vous souhaitez utiliser un fichier Kerberos keytab pour vous identifier, cochez la case Use a keytab to authenticate. Un fichier keytab contient des paires de principaux et clés cryptées Kerberos. Vous devez saisir le principal à utiliser dans le champ Principal et le chemin d'accès au fichier keytab dans le champ Keytab. Ce fichier keytab doit être stocké sur la machine où s'exécute votre Job, par exemple, sur un serveur de Jobs Talend.

    Notez que l'utilisateur qui exécute un Job utilisant un keytab n'est pas forcément celui désigné par le principal mais qu'il doit avoir le droit de lecture pour le fichier keytab utilisé. Par exemple, le nom d'utilisateur que vous utilisez pour exécuter le Job est user1 et le principal à utiliser est guest. Dans cette situation, assurez-vous que user1 a les droits de lecture pour le fichier keytab à utiliser.

  5. Ajoutez les propriétés avancées de Hadoop si elles sont requises par votre cluster et gardez à l'esprit que ces propriétés ne peuvent pas être contextualisées. Cliquez sur le bouton [...] pour ouvrir la table des propriétés et ajouter la ou les propriétés à personnaliser. Lors de l'exécution, ces modifications écrasent les propriétés correspondantes configurées par défaut utilisées par le Studio pour son moteur Hadoop.
  6. Si votre Studio supporte la création de Jobs Apache Spark et que votre cluster attend des propriétés Spark avancées, utilisez la case Use Spark properties pour ouvrir les propriétés de la table et ajouter la ou les propriétés à utiliser. Gardez à l’esprit que ces propriétés ne peuvent pas être contextualisées.

    Lorsque vous réutilisez cette connexion dans vos Jobs Apache Spark, les propriétés Spark avancées que vous avez ajoutées ici sont automatiquement ajoutées aux configurations de Spark pour ces Jobs.

  7. Si vous utilisez Cloudera V5.5+ pour exécuter les Jobs Batch MapReduce ou Apache Spark, vous pouvez cocher la case Use Cloudera Navigator pour utiliser Cloudera Navigator, trouver le lignage d'un flux de données en particulier afin de découvrir comment ce flux de données a été généré par un Job. Toutefois, gardez à l'esprit que la configuration de Cloudera Navigator ne peut pas être contextualisée.

    Lorsque cette option est activée, vous devez configurer les paramètres suivants :

    • Username et Password : informations d'authentification utilisées pour vous connecter à votre Cloudera Navigator.

    • Cloudera Navigator URL : saisissez l'emplacement du Cloudera Navigator pour vous connecter.

    • Cloudera Navigator Metadata URL : saisissez l'emplacement où sont stockées les métadonnées (Navigator Metadata).

    • Activate the autocommit option : cochez cette case pour que le Cloudera Navigator génère le lignage du Job courant à la fin de son exécution.

      Comme cette option force le Cloudera Navigator à générer des lignages de toutes ses entités disponibles, comme les fichiers et répertoires HDFS, les requêtes Hive ou les scripts Pig, il n'est pas recommandé de l'utiliser dans un environnement de production, car elle ralentit le Job.

    • Kill the job if Cloudera Navigator fails : cochez cette case pour arrêter l'exécution du Job lorsque la connexion à Cloudera Navigator échoue.

      Sinon, laissez cette case décochée pour que votre Job continue à s'exécuter.

    • Disable SSL validation : cochez cette case pour que votre Job se connecte au Cloudera Navigator sans processus de validation SSL.

      Cette fonctionnalité est conçue pour simplifier les tests de vos Jobs mais il n'est pas recommandé de l'utiliser dans un cluster en production.

  8. Cliquez sur le bouton Check services pour vérifier que le Studio peut se connecter au NameNode et au service Resource Manager que vous avez spécifié dans cet assistant. Une boîte de dialogue s'affiche pour indiquer le processus de vérification et l'état de la connexion. Si la boîte de dialogue affiche un échec de la connexion, vous devez revoir et mettre à jour les informations de connexion que vous avez définies dans l'assistant de connexion.
  9. Cliquez sur Finish pour valider vos modifications et fermer l'assistant.

    La connexion à Hadoop qui vient d'être configurée s'affiche sous le dossier Hadoop cluster, dans l'arborescence Repository. Cette connexion n'a pas de sous-dossier avant que vous ne créiez des connexions à des éléments sous la distribution Hadoop.

Contextualisation des paramètres de connexion à Hadoop

Contextualisez les paramètres de connexion à Hadoop pour rendre cette connexion portable dans différents environnements Hadoop comme l'environnement de test et l'environnement de production.

Avant de commencer

  • Vérifiez que la machine cliente sur laquelle est installé le Studio Talend peut reconnaître les noms d'hôtes des nœuds du cluster Hadoop à utiliser. Dans cet objectif, ajoutez les mappings des entrées adresse IP/nom d'hôte pour les services de ce cluster Hadoop dans le fichier hosts de la machine cliente.

    Par exemple, si le nom d'hôte du serveur du NameNode Hadoop est talend-cdh550.weave.local, et son adresse IP est 192.168.x.x, l'entrée du mapping est la suivante : 192.168.x.x talend-cdh550.weave.local.

  • Le cluster Hadoop à utiliser a été correctement configuré et est en cours de fonctionnement.

  • Une connexion à Hadoop a été correctement définie en suivant les étapes présentées dans Définition de la connexion à Hadoop.

  • La perspective Integration est active.

  • Cloudera est l'exemple de distribution de cet article. Si vous utilisez une distribution différente, vous devez garder à l'esprit les prérequis particuliers expliqués comme suit :
    • Si vous devez vous connecter à MapR à partir du Studio, assurez-vous d'avoir installé le client MapR dans une machine où le Studio est stocké et d'avoir ajouté la bibliothèque du client MapR client à la variable PATH de cette machine. Selon la documentation MapR, la ou les bibliothèques d'un client MapR correspondante(s) à chaque version de système d'exploitation peut ou peuvent être trouvée(s) sous MAPR_INSTALL\/hadoop\hadoop-VERSION/lib/native. Par exemple, la bibliothèque pour Windows est \lib\native\MapRClient.dll dans le fichier .jar client MapR. Pour plus d'informations, consultez le site de MapR : http://www.mapr.com/blog/basic-notes-on-configuring-eclipse-as-a-hadoop-development-environment-for-mapr (en anglais).

    • Si vous devez vous connecter à un cluster Google Dataproc, définissez le chemin d'accès du fichier d'identifiants de Google associé au compte du service à utiliser afin que la fonctionnalité Check service de l'assistant de la métadonnée puisse vérifier votre configuration.

      Pour plus d'informations concernant la définition de la variable d'environnement, consultez Getting Started with Authentication (en anglais) de la documentation Google.

Procédure

  1. Dans l'arborescence Repository de votre Studio, développez Metadata et Hadoop cluster avant de double-cliquer sur la connexion à Hadoop que vous avez créée en suivant les étapes présentées dans Définition de la connexion à Hadoop.
  2. Cliquez sur Next pour aller à la fenêtre de la deuxième étape de cet assistant et cliquez sur le bouton Export as context.
  3. Dans l'assistant [Create/Resue a context group], sélectionnez Create a new repository context et cliquez surNext.
  4. Dans la fenêtre de l'étape 1 [Create/Resue a context group], ajoutez au moins le nom que vous souhaitez utiliser pour le groupe de contextes à créer, par exemple, smart_connection et cliquez sur Next.

    Une vue en lecture seule de ce groupe de contextes est créée et renseignée automatiquement avec les paramètres d'une connexion à Hadoop donnée que vous avez définie dans Définition de la connexion à Hadoop.

    Vous pouvez également noter que tous les paramètres de connexion ne sont pas ajoutés au groupe de contextes, ce qui signifie qu'ils ne sont pas tous contextualisés, comme prévu.

  5. Cliquez sur Finish pour passer à l'étape 2 de l'assistant de connexion Hadoop.

    Les paramètres de connexion ont été automatiquement définis pour utiliser des variables de contexte et rester en lecture seule.

  6. Cliquez sur Finish pour valider ces modifications.

    Ce nouveau groupe de contextes, nommé smart_connection, a été créé sous le nœud Contexts.

  7. Dans Repository, double-cliquez sur ce nouveau groupe de contextes afin d'ouvrir l'assistant [Create/Edit a context group].
  8. Cliquez sur Next pour passer à l'étape 2 afin de modifier les variables de contextes.
  9. Cliquez sur le bouton [+] pour ouvrir l'assistant [Configure contexts], à partir duquel vous allez ajouter un nouveau contexte.
  10. Cliquez sur New pour ouvrir l'assistant [New context] et saisissez le nom de ce nouveau contexte, par exemple prod.
  11. Cliquez sur OK pour valider les modifications et fermez l'assistant [New context]. Le nouveau contexte est ajouté dans liste de contexte.
  12. Cliquez sur OK pour valider l'ajout et fermer l'assistant [Configure contexts] pour revenir à l'assistant [Create/Edit a context group].
  13. Définissez le nouveau contexte pour contenir les valeurs des paramètres de connexion pour un cluster Hadoop différent, par exemple votre cluster de production.
  14. Cliquez sur Finish pour valider les modifications et accepter la propagation.
  15. Revenez au nœud Hadoop cluster dans le Repository, double-cliquez sur la connexion à Hadoop que vous contextualisez pour ouvrir son assistant.
  16. Dans la fenêtre de l'étape 2 de cet assistant, assurez-vous que la case Use custom Hadoop configuration est cochée et cliquez sur le bouton [...] à côté pour ouvrir l'assistant [Hadoop configuration].

    Le contexte prod est affiché dans l'assistant et le message "Please import the jar." à côté vous demande d'importer le fichier de configuration Hadoop spécifique au cluster Hadoop pour lequel ce contexte prod a été créé.

    Vous pouvez également remarquer que le contexte Default a été le premier contexte généré par cette connexion à Hadoop donnée, smart_connection, possède déjà le fichier .jar de configuration Hadoop. Ce fichier .jar a été généré automatiquement à la fin du processus définissant cette connexion Hadoop et créant le contexte Default pour cette connexion.

  17. Cliquez sur le champ de ce message "Please import the jar." pour afficher le bouton [...] et cliquez sur ce bouton pour ouvrir l'assistant [Hadoop configuration import wizard].

    Cette étape débute le même processus que celui expliqué dans Définition de la connexion à Hadoop pour définir soit manuellement, soit automatiquement la configuration Hadoop. Toutefois, à la fin de ce processus, cette étape doit générer uniquement le fichier .jar de configuration Hadoop approprié pour le contexte prod mais elle ne doit pas créer un nouvel élément de connexion Hadoop sous le nœud Hadoop cluster.

  18. Cliquez sur OK pour valider les modifications, cliquez sur Finish pour valider la contextualisation et fermez l'assistant de connexion Hadoop.

    Si une fenêtre s'ouvre, cliquez sur Yes pour accepter la propagation.

  19. La connexion à Hadoop est contextualisée et vous pouvez continuer à créer des connexions filles pour ses éléments comme HBase, HDFS et Hive etc. basées sur cette connexion. Chaque assistant de connexion contient le bouton Export as context. Utilisez-le pour contextualiser chacune de ces connexions.

Résultats

Lorsque vous réutilisez ces connexions via la liste Property type dans un composant donné dans vos Jobs, ces contextes sont listés dans la vue Run du Job.

Réutilisation d'une connexion Hadoop contextualisée dans un Job

Avant de commencer

Procédure

  1. Dans l'espace de modélisation graphique du Studio, déposez un composant Hadoop associé, par exemple le tHDFSConnection. Cela signifie que vous devez avoir créé une connexion HDFS contextualisée sous la connexion Hadoop contextualisée à utiliser.
  2. Double-cliquez sur ce composant pour ouvrir sa vue Component.
  3. Dans la liste Property type, sélectionnez Repository et cliquez sur le bouton [...] pour ouvrir la Vue du référentiel.
  4. Sélectionnez la connexion HDFS à utiliser et cliquez sur OK pour valider la sélection.
  5. Dans la boîte de dialogue qui s'affiche, cliquez sur Yes pour accepter l'ajout des contextes définis pour la connexion au Job et dans la fenêtre qui s'affiche, sélectionnez les contextes listés.
  6. Cliquez sur OK pour valider l'ajout.

Résultats

Vous pouvez afficher les contextes disponibles dans la vue Run du Job.

Création d'un nouveau contexte de configuration de Hadoop en dehors du Studio (facultatif)

Vous pouvez contextualiser la connexion à Hadoop pour un Job sans utiliser le Studio.

Lorsque vous n'avez pas le Studio à portée de main mais que vous devez déployer un Job dans un environnement Hadoop différent des environnements Hadoop déjà définis pour ce Job, vous pouvez choisir l'approche manuelle et ajouter un nouveau contexte de connexion à Hadoop.

Si le Job utilise une connexion à Hadoop contextualisée qui a deux contextes, par exemple Default et Dev, après avoir été construite en dehors du Studio, le dossier lib de l'artefact construit (le zip du Job) contient deux jars spéciaux pour les environnements Hadoop donnés. Le nom de ces jars suit un modèle : "hadoop-conf-[nom_de_la_métadonnée_dans_le_référentiel]_[nom_du_contexte].jar".

Le Jar à utiliser lors de l'exécution est défini par le contexte utilisé dans la commande que vous pouvez lire dans le fichier .bat ou le fichier .sh du Job.

La ligne suivante est un exemple de cette commande, qui appelle le contexte Default :

java -Xms256M -Xmx1024M -cp .;../lib/routines.jar;../lib/antlr-runtime-3.5.2.jar;../lib/avro-1.7.6-cdh5.10.1.jar;../lib/commons-cli-1.2.jar;../lib/commons-codec-1.9.jar;../lib/commons-collections-3.2.2.jar;../lib/commons-configuration-1.6.jar;../lib/commons-lang-2.6.jar;../lib/commons-logging-1.2.jar;../lib/dom4j-1.6.1.jar;../lib/guava-12.0.1.jar;../lib/hadoop-auth-2.6.0-cdh5.10.1.jar;../lib/hadoop-common-2.6.0-cdh5.10.1.jar;../lib/hadoop-hdfs-2.6.0-cdh5.10.1.jar;../lib/htrace-core4-4.0.1-incubating.jar;../lib/httpclient-4.3.3.jar;../lib/httpcore-4.3.3.jar;../lib/jackson-core-asl-1.8.8.jar;../lib/jackson-mapper-asl-1.8.8.jar;../lib/jersey-core-1.9.jar;../lib/log4j-1.2.16.jar;../lib/log4j-1.2.17.jar;../lib/org.talend.dataquality.parser.jar;../lib/protobuf-java-2.5.0.jar;../lib/servlet-api-2.5.jar;../lib/slf4j-api-1.7.5.jar;../lib/slf4j-log4j12-1.7.5.jar;../lib/talend_file_enhanced_20070724.jar;mytestjob_0_1.jar; local_project.mytestjob_0_1.myTestJob --context=Default %*

Dans cet exemple, passer de Default à Dev modifie la configuration de Hadoop qui sera chargée dans le Job lors de l'exécution.

Ajout manuel d'un nouveau contexte de connexion à Hadoop au Job construit

Vous pouvez ajouter manuellement un environnement Hadoop au Job, sans l'aide du Studio.

En suivant les étapes décrites dans Création d'un nouveau contexte de configuration de Hadoop en dehors du Studio (facultatif), ajoutez un environnement Hadoop Prod.

Avant de commencer

  • Ce Job doit utiliser des connexions à Hadoop contextualisées. Cela signifie que votre Job utilise le type de propriété Repository afin de réutiliser la connexion à Hadoop pour laquelle des contextes ont été définis.

    Vous pouvez trouver plus d'informations concernant l'utilisation des métadonnées dans un Job sur Talend Help Center.

    Pour plus d'informations concernant la définition des contextes pour une connexion à Hadoop dans le Studio, consultez Contextualisation des paramètres de connexion à Hadoop.

  • Le Job que vous devez déployer doit avoir été construit correctement dans le Studio et doit être dézippé.

    Vous pouvez trouver plus d'informations concernant la construction des Jobs à déployer et leur exécution sur tous les serveurs, indépendamment du Studio Talend, sur Talend Help Center.

Procédure

  1. Dans le dossier contexts, dupliquez le fichier Dev.properties et renommez-le Prod.properties.
  2. Dans le dossier lib, dupliquez le fichier hadoop-conf-cdh5100_Dev.jar et renommez-le hadoop-conf-cdh5100_Prod.jar.
  3. Ouvrez le fichier hadoop-conf-cdh5100_Prod.jar et remplacez les fichiers de configuration par ceux du cluster de production.

Résultats

Vous pouvez ensuite utiliser le contexte Prod dans la commande pour charger la configuration Prod dans le Job.