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
-
Assurez-vous 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.
-
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 sur la même machine que le Studio et d'avoir ajouté la bibliothèque client de MapR dans 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, pour Windows, la bibliothèque est lib\MapRClient.dll dans le fichier Jar du client MapR. Pour plus d'informations, consultez la page suivante sur 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
Contextualisation des paramètres de connexion à Hadoop
Avant de commencer
-
Assurez-vous 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 sur la même machine que le Studio et d'avoir ajouté la bibliothèque client de MapR dans 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, pour Windows, la bibliothèque est lib\MapRClient.dll dans le fichier Jar du client MapR. Pour plus d'informations, consultez la page suivante sur 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
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
-
Un Job vide a été créé et ouvert dans l'espace de modélisation graphique du Studio.
-
Une connexion Hadoop et ses connexions enfant ont été correctement configurées en suivant les explications présentées dans Définition de la connexion à Hadoop.
Procédure
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.
Vous pouvez trouver plus d'informations concernant l'utilisation des métadonnées dans un Job sur Talend Help Center (https://help.talend.com).
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.
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 (https://help.talend.com).
Procédure
- Dans le dossier contexts, dupliquez le fichier Dev.properties et renommez-le Prod.properties.
- Dans le dossier lib, dupliquez le fichier hadoop-conf-cdh5100_Dev.jar et renommez-le hadoop-conf-cdh5100_Prod.jar.
- 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.