Dans cet article vous trouverez des informations pour mieux comprendre ce qu’est HDFS ainsi qu’un tutoriel pas à pas pour apprendre à générer des données aléatoires et à les écrire dans HDFS. Vous pourrez également lire les données depuis HDFS, les trier et les afficher dans la console.

Qu’est-ce que HDFS ?

Définition

HDFS signifie Hadoop Distributed File System. C’est un framework open source faisant partie du projet Apache. Il s’agit d’un système de stockage et de traitement de fichiers adapté au Big Data puisqu’il permet la gestion de données volumineuses.

Hadoop permet d’exécuter des applications sur des systèmes cluster contenant des namenodes et des milliers de datanodes qui peuvent atteindre une taille de plusieurs centaines de téraoctets.

Namenode et datanode ?

Le namenode est ce avec quoi communique un individu lorsqu’il exécute une commande dans le système. Il a une fonction de storage, de classement et de distribution des différentes tâches.

Chaque namenode contrôle des datanodes (nœuds de données). Le datanode a une fonction d’exécutant.  Il est au service du namenode et applique les ordres transmis qui lui sont transmis comme par exemple le stockage de données dans un block (érpertoire) précis ou bien le fait de retrouver des blocks spécifiques en fonction des services demandés.

Pour simplifier, le namenode peut être vu comme un manager et le datanode comme un ouvrier à son service.

Objectif de l’Hadoop Distributed File System

Le système de fichiers distribué Hadoop, favorise la qualité du transfert de données entre chaque datanode et permet un fonctionnement ininterrompu du système en cas de défaillance d’un nœud de données.

L’objectif d’HDFS est de faciliter le traitement Big Data et cloud, et de minimiser les risques de panne même lorsqu’un nombre important de noeuds se retrouvent hors service.

Le système HDFS est lié à MapReduce, un modèle utilisé à la base par Google pour analyser ses résultats de recherche.  

Tutoriel pour utiliser HDFS

Ce tutoriel utilise Talend Data Fabric Studio version 6 et un cluster Hadoop : Cloudera CDH version 5.4. Il a pour objectif de vous guider étape par étape dans la gestion, l’écriture, le tri et l’affichage des données HDFS

1. Créer un Job standard.

  1. Vérifiez que la perspective Integration (Intégration) est sélectionnée.
  2. Pour vous assurer que les métadonnées de connexion du cluster Hadoop et de la connexion HDFS ont été créées dans le Référentiel de projet, développez Hadoop Cluster (Cluster Hadoop).
  3. Dans le Référentiel, développez Job Designs (Jobs), cliquez avec le bouton droit sur Standard, puis cliquez sur Create Standard Job (Créer un Job standard).
    Dans le champ Name (Nom) de l’assistant New Job (Nouveau Job), saisissez ReadWriteHDFS. Dans le champ Purpose (Objectif), saisissez Read/Write data in HDFS (Lire/écrire des données dans HDFS), et dans le champ Description, saisissez Standard job to write and read customers data to and from HDFS (Job standard pour lire et écrire des données depuis et vers HDFS), puis cliquez sur Finish (Terminer). Le Job s’ouvre dans le Job Designer.

2. Ajouter et configurer un composant tRowGenerator pour générer des données client aléatoires.

  1. Pour générer des données client aléatoires, ajoutez un composant tRowGenerator dans le Job Designer.
  2. Pour définir le schéma et les paramètres de fonction du composant tRowGenerator, double-cliquez sur tRowGenerator_1.
  3. Pour ajouter des colonnes au schéma, cliquez trois fois sur l’icône [+] et entrez le nom des colonnes : CustomerID (ID client), FirstName (Prénom) et LastName (Nom). Vous devez ensuite configurer des attributs pour ces champs.
  4. Pour changer le type de la colonne CustomerID, cliquez sur le champ Type, puis sur Integer
    Définissez ensuite le champ Functions (Fonctions) de ces trois colonnes sur random(int,int), TalendDataGenerator.getFirstName() et TalendDataGenerator.getLastName() respectivement.
  5. Dans la table, sélectionnez la colonne CustomerID, puis dans l’onglet Functions parameters Paramètres de la fonction, définissez la valeur maximale sur 1000.
  6. Dans le champ Number of Rows for RowGenerator (Nombre de lignes pour RowGenerator), saisissez 1000 et cliquez sur OK pour enregistrer la configuration.

3. Écrire des données dans HDFS

Vous créerez un nouveau composant tHDFSOutput qui réutilise les métadonnées HDFS disponibles dans le Référentiel de projet.

  1. Dans le Référentiel, sous Metadata > HadoopCluster > MyHadoopCluster > HDFS (Métadonnées > Cluster Hadoop > MyHadoopCluster > HDFS), cliquez sur MyHadoopCluster_HDFS et déplacez cet élément vers le Job Designer.
  2. Dans la liste Components (Composants), sélectionnez tHDFSOutput et cliquez sur OK.
  3. Créez un flux de données depuis le composant tRowGenerator_1 vers le composant MyHadoopCluster_HDFS, en liant les deux composants avec une ligne Main, puis double-cliquez sur le composant MyHadoopCluster_HDFS pour ouvrir la vue Component (Composant).
    Notez que le composant est déjà configuré avec les informations de connexion des métadonnées HDFS.
  4. Dans la zone File Name (Nom du fichier), saisissez /user/student/CustomersData et dans la liste Action, sélectionnez Overwrite (Écraser).

Le premier sous-projet permettant d’écrire des données dans HDFS est prêt. Il récupère les données générées dans le composant tRowGenerator que vous avez créé et les écrit dans HDFS en utilisant une connexion définie à l’aide de métadonnées.

4. Lire des données dans HDFS

Vous allez concevoir un sous-projet pour lire les données client depuis HDFS, les trier et les afficher dans la console. Pour lire les données client depuis HDFS, vous créerez un nouveau composant tHDFSInput réutilisant les métadonnées HDFS disponibles dans le Référentiel de projet.

  1. Dans le Référentiel, sous Metadata > HadoopCluster > MyHadoopCluster > HDFS (Métadonnées > Cluster Hadoop > MyHadoopCluster > HDFS), cliquez sur MyHadoopCluster_HDFS et déplacez cet élément vers le Job Designer.
  2. Dans la fenêtre Components (Composants), sélectionnez tHDFSInput et cliquez sur OK.
  3. Pour ouvrir la vue Component (Composant) du composant d’entrée MyHadoopCluster_HDFS, double-cliquez sur MyHadoopCluster_HDFS.
    Notez que le composant est déjà configuré avec les informations de connexion des métadonnées HDFS.
  4. Dans la zone File Name (Nom du fichier), saisissez le path /user/student/CustomersData.

5. Spécifier le schéma dans le composant d’entrée MyHadoopCluster_HDFS pour lire les données dans HDFS

  1. Pour ouvrir l’éditeur de schéma, dans la vue Component (Composant) du composant d’entrée MyHadoopCluster_HDFS, cliquez sur Edit schema (Modifier le schéma).
  2. Pour ajouter des colonnes au schéma, cliquez trois fois sur l’icône [+] et entrez le nom des colonnes : CustomerID (ID client), FirstName (Prénom) et LastName (Nom).
  3. Pour modifier le type de la colonne CustomerID, cliquez sur le champ Type, puis sur Integer.
    Remarque : ce schéma est le même que celui des composants tRowGenerator et tHDFSOutput. Vous pouvez donc le copier depuis l’un de ces composants et le coller ici.
  4. Connectez le composant tRowGenerator au composant d’entrée MyHadoopCluster_HDFS à l’aide d’un déclencheur OnSubjobOk.

6. Trier les données par ordre ascendant de CustomerID à l’aide du composant tSortRow

  1. Ajoutez un composant tSortRow et connectez-le au composant d’entrée MyHadoopCluster_HDFS à l’aide d’une ligne Main.
  2. Pour ouvrir la vue Component (Composant) de tSortRow, double-cliquez sur ce composant.
  3. Pour configurer le schéma, cliquez sur Sync columns (Sync colonnes).
  4. Pour ajouter un nouveau critère à la table Criteria (Critères), cliquez sur [+] et, dans la colonne Schema (Schéma), saisissez CustomerID. Dans la colonne sort num or alpha? (Tri num ou alpha ?), sélectionnez num et dans la colonne Order asc or desc? (Ordre asc ou desc ?), sélectionnez asc.

7. Afficher les données triées dans la console à l’aide d’un composant tLogRow

  1. Ajoutez un composant tLogRow et connectez-le au composant tSortRow avec une ligne Main.
  2. Pour ouvrir la vue Component (Composant) de tLogRow, double-cliquez sur ce composant.
  3. Dans le panneau Mode, sélectionnez Table.

Votre job est prêt. Il génère d’abord des données et les écrit dans HDFS. Ensuite, il lit les données depuis HDFS, les trie et les affiche dans la console.

8. Exécuter le job et observer les résultats dans la console

  1. Pour exécuter le Job, cliquez sur Run (Exécuter) dans la vue Run (Exécuter).
  2. Les données triées sont affichées dans la console.

Grâce à ce tutoriel Hadoop Distributed File System, vous pouvez désormais faciliter le stockage, la gestion et le traitement des data de vos clients.