Comment créer et télécharger un fichier sur le HDFS

HadoopHadoopBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Le Hadoop Distributed File System (HDFS) est un composant essentiel de l'écosystème Hadoop, offrant une solution de stockage fiable et évolutive pour les applications de big data. Dans ce tutoriel, nous vous guiderons tout au long du processus de création et de téléchargement de fichiers sur le HDFS, vous permettant ainsi de gérer efficacement vos données dans l'environnement Hadoop.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHDFSGroup(["Hadoop HDFS"]) hadoop/HadoopHDFSGroup -.-> hadoop/hdfs_setup("HDFS Setup") hadoop/HadoopHDFSGroup -.-> hadoop/fs_cat("FS Shell cat") hadoop/HadoopHDFSGroup -.-> hadoop/fs_ls("FS Shell ls") hadoop/HadoopHDFSGroup -.-> hadoop/fs_mkdir("FS Shell mkdir") hadoop/HadoopHDFSGroup -.-> hadoop/fs_put("FS Shell copyToLocal/put") hadoop/HadoopHDFSGroup -.-> hadoop/fs_get("FS Shell copyFromLocal/get") subgraph Lab Skills hadoop/hdfs_setup -.-> lab-415860{{"Comment créer et télécharger un fichier sur le HDFS"}} hadoop/fs_cat -.-> lab-415860{{"Comment créer et télécharger un fichier sur le HDFS"}} hadoop/fs_ls -.-> lab-415860{{"Comment créer et télécharger un fichier sur le HDFS"}} hadoop/fs_mkdir -.-> lab-415860{{"Comment créer et télécharger un fichier sur le HDFS"}} hadoop/fs_put -.-> lab-415860{{"Comment créer et télécharger un fichier sur le HDFS"}} hadoop/fs_get -.-> lab-415860{{"Comment créer et télécharger un fichier sur le HDFS"}} end

Introduction au Hadoop Distributed File System (HDFS)

Le Hadoop Distributed File System (HDFS) est un système de fichiers distribué conçu pour stocker et traiter de grands ensembles de données sur un cluster de matériel basique. C'est un composant central de l'écosystème Apache Hadoop et est largement utilisé dans les applications de big data.

Qu'est-ce que le HDFS ?

Le HDFS est un système de fichiers hautement tolérant aux pannes et évolutif qui offre un accès à haut débit aux données des applications. Il est conçu pour fonctionner sur du matériel à faible coût et peut gérer le stockage et le traitement de grands ensembles de données. Le HDFS suit une architecture maître-esclave, où le nœud maître est appelé NameNode et les nœuds esclaves sont appelés DataNodes.

Principales caractéristiques du HDFS

  • Évolutivité : Le HDFS peut gérer des pétaoctets de données et des milliers de nœuds dans un seul cluster.
  • Tolérance aux pannes : Le HDFS réplique automatiquement les données sur plusieurs DataNodes, garantissant la disponibilité des données même en cas de défaillance matérielle.
  • Haut débit : Le HDFS est optimisé pour le traitement par lots et peut offrir un haut débit pour les transferts de grandes quantités de données.
  • Compatibilité : Le HDFS est compatible avec une large gamme de formats de données et peut être intégré à diverses outils et frameworks de big data.

Architecture du HDFS

L'architecture du HDFS se compose des éléments clés suivants :

graph TD NameNode -- Gère l'espace de noms du système de fichiers --> DataNode DataNode -- Stocke et récupère les données --> Client Client -- Interagit avec --> NameNode
  1. NameNode : Le NameNode est le nœud maître qui gère l'espace de noms du système de fichiers, y compris les métadonnées des fichiers et l'emplacement des blocs de données dans le cluster.
  2. DataNode : Les DataNodes sont les nœuds esclaves qui stockent les blocs de données réels et effectuent des opérations de données telles que la lecture, l'écriture et la réplication des données.
  3. Client : Le client est l'application ou l'utilisateur qui interagit avec le cluster HDFS pour effectuer des opérations sur les fichiers, telles que la création, la lecture et l'écriture de fichiers.

Cas d'utilisation du HDFS

Le HDFS est largement utilisé dans diverses applications de big data, notamment :

  • Traitement par lots : Le HDFS est bien adapté au traitement par lots de grands ensembles de données, comme l'analyse des journaux, le web crawling et le calcul scientifique.
  • Entrepôt de données : Le HDFS est souvent utilisé comme couche de stockage pour les solutions d'entrepôt de données, offrant un moyen évolutif et économique de stocker et de traiter de grandes quantités de données structurées et non structurées.
  • Apprentissage automatique et intelligence artificielle : Le HDFS est un choix populaire pour stocker et traiter les grands ensembles de données nécessaires à l'entraînement de modèles d'apprentissage automatique et d'intelligence artificielle.
  • Données en continu : Le HDFS peut être utilisé en conjonction avec d'autres composants de l'écosystème Hadoop, comme Apache Spark ou Apache Flink, pour traiter des données en continu en temps réel ou quasi en temps réel.

Création d'un fichier dans le HDFS

Pour créer un fichier dans le HDFS, vous pouvez utiliser l'interface en ligne de commande (CLI) Hadoop ou l'API Java HDFS. Dans cette section, nous allons montrer comment créer un fichier dans le HDFS en utilisant l'interface en ligne de commande Hadoop.

Prérequis

Avant de pouvoir créer un fichier dans le HDFS, vous devez avoir un cluster Hadoop en cours d'exécution et les autorisations nécessaires pour interagir avec le système de fichiers. Assurez-vous que l'interface en ligne de commande Hadoop est installée et configurée sur votre système.

Création d'un fichier dans le HDFS en utilisant l'interface en ligne de commande Hadoop

  1. Ouvrez un terminal sur votre système Ubuntu 22.04.
  2. Démarrez les services Hadoop en exécutant les commandes suivantes :
sudo service hadoop-namenode start
sudo service hadoop-datanode start
  1. Utilisez la commande hdfs dfs pour créer un fichier dans le HDFS. La syntaxe de base est :
hdfs dfs -put <local_file_path> <hdfs_file_path>

Ici, <local_file_path> est le chemin du fichier sur votre système local, et <hdfs_file_path> est le chemin où vous souhaitez créer le fichier dans le HDFS.

Par exemple, pour créer un fichier nommé example.txt dans le répertoire /user/username/ du HDFS, exécutez la commande suivante :

hdfs dfs -put /path/to/local/example.txt /user/username/example.txt
  1. Vérifiez que le fichier a été créé dans le HDFS en exécutant la commande suivante :
hdfs dfs -ls /user/username/

Cela répertoriera les fichiers et les répertoires dans le répertoire /user/username/, y compris le fichier example.txt nouvellement créé.

Création d'un fichier dans le HDFS en utilisant l'API Java

Alternativement, vous pouvez créer un fichier dans le HDFS de manière programmée en utilisant l'API Java HDFS. Voici un extrait de code Java d'exemple :

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;

public class CreateFileInHDFS {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create("hdfs://namenode:8020"), conf);

        Path filePath = new Path("/user/username/example.txt");
        fs.create(filePath).close();

        System.out.println("File created in HDFS: " + filePath);
    }
}

Dans cet exemple, nous créons un nouveau fichier nommé example.txt dans le répertoire /user/username/ du cluster HDFS.

Téléchargement d'un fichier sur le HDFS

Après avoir créé un fichier dans le HDFS, l'étape suivante consiste à télécharger le fichier sur le cluster HDFS. Vous pouvez télécharger des fichiers sur le HDFS en utilisant l'interface en ligne de commande (CLI) Hadoop ou l'API Java HDFS. Dans cette section, nous allons montrer les deux méthodes.

Téléchargement d'un fichier sur le HDFS en utilisant l'interface en ligne de commande Hadoop

  1. Ouvrez un terminal sur votre système Ubuntu 22.04.
  2. Démarrez les services Hadoop en exécutant les commandes suivantes :
sudo service hadoop-namenode start
sudo service hadoop-datanode start
  1. Utilisez la commande hdfs dfs pour télécharger un fichier sur le HDFS. La syntaxe de base est :
hdfs dfs -put <local_file_path> <hdfs_file_path>

Ici, <local_file_path> est le chemin du fichier sur votre système local, et <hdfs_file_path> est le chemin où vous souhaitez télécharger le fichier dans le HDFS.

Par exemple, pour télécharger un fichier nommé example.txt depuis votre système local vers le répertoire /user/username/ du HDFS, exécutez la commande suivante :

hdfs dfs -put /path/to/local/example.txt /user/username/example.txt
  1. Vérifiez que le fichier a été téléchargé sur le HDFS en exécutant la commande suivante :
hdfs dfs -ls /user/username/

Cela répertoriera les fichiers et les répertoires dans le répertoire /user/username/, y compris le fichier example.txt téléchargé.

Téléchargement d'un fichier sur le HDFS en utilisant l'API Java

Alternativement, vous pouvez télécharger un fichier sur le HDFS de manière programmée en utilisant l'API Java HDFS. Voici un extrait de code Java d'exemple :

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;

public class UploadFileToHDFS {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create("hdfs://namenode:8020"), conf);

        Path localFilePath = new Path("/path/to/local/example.txt");
        Path hdfsFilePath = new Path("/user/username/example.txt");

        fs.copyFromLocalFile(localFilePath, hdfsFilePath);

        System.out.println("File uploaded to HDFS: " + hdfsFilePath);
    }
}

Dans cet exemple, nous téléchargeons le fichier example.txt depuis le système local vers le répertoire /user/username/ du cluster HDFS.

Résumé

En suivant les étapes décrites dans ce tutoriel Hadoop, vous apprendrez à créer et à télécharger des fichiers sur le Hadoop Distributed File System (HDFS). Cette connaissance vous permettra de stocker et d'accéder efficacement aux données dans vos applications basées sur Hadoop, en exploitant pleinement le potentiel de l'écosystème Hadoop.