Cómo listar el contenido de un directorio HDFS

HadoopHadoopBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este tutorial lo guiará a través del proceso de listar el contenido de un directorio HDFS, una habilidad fundamental para trabajar con el Sistema de Archivos Distribuido de Hadoop (Hadoop Distributed File System, HDFS). Al entender los conceptos básicos de HDFS y explorar escenarios prácticos, aprenderá cómo administrar de manera eficiente sus datos de Hadoop y navegar por el sistema de archivos.


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_test("FS Shell test") subgraph Lab Skills hadoop/hdfs_setup -.-> lab-417681{{"Cómo listar el contenido de un directorio HDFS"}} hadoop/fs_cat -.-> lab-417681{{"Cómo listar el contenido de un directorio HDFS"}} hadoop/fs_ls -.-> lab-417681{{"Cómo listar el contenido de un directorio HDFS"}} hadoop/fs_mkdir -.-> lab-417681{{"Cómo listar el contenido de un directorio HDFS"}} hadoop/fs_test -.-> lab-417681{{"Cómo listar el contenido de un directorio HDFS"}} end

Comprender HDFS

El Sistema de Archivos Distribuido de Hadoop (Hadoop Distributed File System, HDFS) es el sistema de almacenamiento principal utilizado por las aplicaciones de Hadoop. Está diseñado para almacenar y administrar grandes conjuntos de datos de manera distribuida y tolerante a fallos. HDFS se basa en el concepto de una arquitectura maestro-esclavo, donde el nodo maestro, llamado NameNode, gestiona los metadatos del sistema de archivos, y los nodos esclavos, llamados DataNodes, almacenan los datos reales.

HDFS está diseñado para proporcionar un acceso de alto rendimiento a los datos, lo que lo hace muy adecuado para aplicaciones que requieran procesar grandes cantidades de datos, como el procesamiento por lotes, el aprendizaje automático y el análisis de datos. Lo consigue dividiendo los archivos en bloques más pequeños y distribuyéndolos entre múltiples DataNodes, lo que permite el procesamiento paralelo de los datos.

Una de las características clave de HDFS es su capacidad para manejar de manera adecuada los fallos de hardware. HDFS replica automáticamente los bloques de datos en múltiples DataNodes, lo que garantiza que los datos estén disponibles incluso si uno o más DataNodes fallan. Esta redundancia también permite que HDFS ofrezca alta disponibilidad y tolerancia a fallos, lo que lo convierte en una opción confiable para almacenar y procesar grandes conjuntos de datos.

Para interactuar con HDFS, los usuarios pueden utilizar la interfaz de línea de comandos (CLI) de Hadoop o varias bibliotecas de cliente, como la API de Java, la API de Python o la herramienta de línea de comandos hdfs. Estas herramientas proporcionan un conjunto de comandos y funciones para realizar diversas operaciones en el sistema de archivos, incluyendo la creación, eliminación y listado de archivos y directorios.

graph TD NameNode -- Manages Metadata --> DataNode1 NameNode -- Manages Metadata --> DataNode2 DataNode1 -- Stores Data Blocks --> Client DataNode2 -- Stores Data Blocks --> Client

Listar archivos y directorios en HDFS

Listar archivos en HDFS

Para listar los archivos y directorios en un directorio HDFS, puede utilizar el comando hdfs dfs -ls. Este comando mostrará el contenido del directorio especificado, incluyendo los nombres de los archivos, los tamaños de los archivos y las fechas de modificación.

Ejemplo:

$ hdfs dfs -ls /user/labex/data
Found 3 items
-rw-r--r--   3 labex supergroup     12345 2023-04-01 12:34 /user/labex/data/file1.txt
-rw-r--r--   3 labex supergroup     67890 2023-04-02 15:27 /user/labex/data/file2.txt
drwxr-xr-x   - labex supergroup        0 2023-04-03 09:15 /user/labex/data/subdirectory

En este ejemplo, el comando lista el contenido del directorio /user/labex/data, que incluye dos archivos (file1.txt y file2.txt) y un subdirectorio (subdirectory).

Listar directorios en HDFS

Para listar los directorios en un directorio HDFS, puede utilizar la opción -d con el comando hdfs dfs -ls. Esto mostrará solo los directorios, excluyendo los archivos.

Ejemplo:

$ hdfs dfs -ls -d /user/labex/data/*
drwxr-xr-x   - labex supergroup        0 2023-04-03 09:15 /user/labex/data/subdirectory

En este ejemplo, el comando lista solo los directorios dentro del directorio /user/labex/data.

Listado recursivo

Para listar el contenido de un directorio HDFS y sus subdirectorios de forma recursiva, puede utilizar la opción -R con el comando hdfs dfs -ls.

Ejemplo:

$ hdfs dfs -ls -R /user/labex/data
-rw-r--r--   3 labex supergroup     12345 2023-04-01 12:34 /user/labex/data/file1.txt
-rw-r--r--   3 labex supergroup     67890 2023-04-02 15:27 /user/labex/data/file2.txt
drwxr-xr-x   - labex supergroup        0 2023-04-03 09:15 /user/labex/data/subdirectory
-rw-r--r--   3 labex supergroup     54321 2023-04-04 17:22 /user/labex/data/subdirectory/file3.txt

En este ejemplo, el comando lista el contenido del directorio /user/labex/data y sus subdirectorios de forma recursiva.

Escenarios prácticos y casos de uso

Exploración y análisis de datos

Un caso de uso común para listar archivos y directorios en HDFS es la exploración y el análisis de datos. Cuando se trabaja con grandes conjuntos de datos almacenados en HDFS, se puede utilizar el comando hdfs dfs -ls para comprender rápidamente la estructura y el contenido de los datos. Esto puede ser útil al preparar los datos para un procesamiento o análisis adicional.

Ejemplo:

$ hdfs dfs -ls /user/labex/sales_data
-rw-r--r--   3 labex supergroup  1234567 2023-04-01 10:23 /user/labex/sales_data/sales_2022.csv
-rw-r--r--   3 labex supergroup  7654321 2023-04-02 14:56 /user/labex/sales_data/sales_2023.csv
drwxr-xr-x   - labex supergroup        0 2023-04-03 08:12 /user/labex/sales_data/regional_data

En este ejemplo, se utiliza el comando hdfs dfs -ls para listar el contenido del directorio /user/labex/sales_data, que contiene dos archivos CSV y un subdirectorio para los datos regionales.

Copia de seguridad y recuperación ante desastres

Otro caso de uso común para listar archivos y directorios en HDFS es con fines de copia de seguridad y recuperación ante desastres. Al listar periódicamente el contenido de los directorios críticos de HDFS, se puede garantizar que los datos se estén almacenando y replicando correctamente, y se pueden identificar cualquier problema potencial o archivo faltante.

Ejemplo:

$ hdfs dfs -ls -R /user/labex/important_data
-rw-r--r--   3 labex supergroup  12345678 2023-04-01 09:00 /user/labex/important_data/file1.txt
-rw-r--r--   3 labex supergroup  87654321 2023-04-02 15:30 /user/labex/important_data/file2.txt
drwxr-xr-x   - labex supergroup         0 2023-04-03 11:45 /user/labex/important_data/backups
-rw-r--r--   3 labex supergroup  98765432 2023-04-04 08:20 /user/labex/important_data/backups/backup_2023-04-03.tar.gz

En este ejemplo, se utiliza el comando hdfs dfs -ls -R para listar recursivamente el contenido del directorio /user/labex/important_data, que incluye dos archivos y un subdirectorio para las copias de seguridad. Esta información se puede utilizar para garantizar que los datos se estén respaldando y replicando correctamente.

Monitoreo y solución de problemas

Listar archivos y directorios en HDFS también puede ser útil con fines de monitoreo y solución de problemas. Al comprobar periódicamente el contenido de los directorios de HDFS, se pueden identificar cualquier cambio inesperado o problema, como archivos faltantes, tamaños de archivos inesperados o acceso no autorizado.

Ejemplo:

$ hdfs dfs -ls /user/labex/logs
-rw-r--r--   3 labex supergroup  12345 2023-04-01 12:34 /user/labex/logs/app_log_2023-04-01.txt
-rw-r--r--   3 labex supergroup  67890 2023-04-02 15:27 /user/labex/logs/app_log_2023-04-02.txt
-rw-r--r--   3 labex supergroup 123456 2023-04-03 09:15 /user/labex/logs/app_log_2023-04-03.txt

En este ejemplo, se utiliza el comando hdfs dfs -ls para listar el contenido del directorio /user/labex/logs, que contiene archivos de registro diarios. Al comprobar periódicamente el contenido de este directorio, se puede garantizar que los registros se estén generando y almacenando correctamente, y se pueden identificar cualquier problema o anomalía potencial.

Resumen

En este tutorial de Hadoop, has aprendido cómo listar el contenido de un directorio HDFS, una habilidad crucial para trabajar con el ecosistema de Hadoop. Al comprender los conceptos básicos de HDFS y explorar casos de uso del mundo real, ahora tienes el conocimiento necesario para administrar de manera efectiva tus datos de Hadoop y navegar por el sistema de archivos. Con estas habilidades, puedes optimizar tus flujos de trabajo de desarrollo y procesamiento de datos en Hadoop.