Introducción
Ya puede subir un archivo a HDFS, pero ¿a dónde lo envió realmente la terminal? El archivo diario de una empresa minorista podría estar en una computadora portátil, en el servidor actual o en un almacenamiento compartido. Leer la copia equivocada puede producir un cálculo perfectamente válido sobre datos incorrectos. Antes de administrar más archivos, necesita reconocer el almacenamiento que utilizan sus comandos.
Hadoop separa las responsabilidades. Hadoop Common proporciona bibliotecas y utilidades compartidas. HDFS almacena archivos. MapReduce describe y ejecuta tareas de procesamiento por lotes. YARN asigna recursos a las aplicaciones, incluidos los trabajos de MapReduce. Utilizará estos nombres poco a poco; hoy examinará el almacenamiento y la configuración, sin ejecutar cálculos ni instalar servicios.
Este laboratorio tiene tres objetivos: descubrir el sistema de archivos predeterminado, demostrar que un texto de ruta idéntico puede referirse a archivos diferentes e identificar los servicios de HDFS en ejecución. Terminará con observaciones obtenidas de su propio entorno. Todos los datos de ejemplo se preparan independientemente del laboratorio anterior. Utilice Terminal; no se requiere programación.
Descubra el destino configurado
En este paso, encontrará el sistema de archivos predeterminado y leerá la opción configurada para ejecutar MapReduce.
La terminal ejecuta un comando cliente. Un cliente solicita a un servicio que realice un trabajo; el servicio puede estar en esta máquina o en otra. La configuración vincula el comando abreviado del cliente con el destino correcto. Comience en su espacio de trabajo local:
cd /home/labex/project
El comando hdfs getconf lee la configuración de Hadoop. Su opción -confKey solicita un ajuste por su nombre. fs.defaultFS indica el sistema de archivos predeterminado que se utiliza cuando una ruta del sistema de archivos de Hadoop no tiene un esquema explícito:
hdfs getconf -confKey fs.defaultFS
Valor esperado:
hdfs://localhost:9000
Esto es una URI, una dirección que incluye cómo acceder a un recurso. Aquí, hdfs selecciona HDFS, localhost es esta máquina y 9000 es el puerto de conexión del servicio. Un puerto identifica un punto de conexión de red utilizado por un servicio. No necesita abrir ese puerto usted mismo.
Guarde el valor observado. Al igual que en el primer laboratorio, > escribe la salida del comando en un archivo local, sustituyendo su contenido anterior:
hdfs getconf -confKey fs.defaultFS > /home/labex/project/output/default-filesystem.txt
Los archivos de configuración de Hadoop utilizan XML: una propiedad tiene un name y un value, es decir, un nombre y un valor. Por ahora solo necesita leer una propiedad. grep selecciona las líneas de texto coincidentes y -A 1 incluye la línea inmediatamente posterior a una coincidencia:
grep -A 1 '<name>mapreduce.framework.name</name>' /etc/labex-bigdata/hadoop/mapred-site.xml
Las dos líneas pertinentes son:
<name>mapreduce.framework.name</name>
<value>yarn</value>
yarn significa que las aplicaciones de MapReduce están configuradas para utilizar YARN en la administración de recursos. Este ajuste por sí solo no demuestra que haya una aplicación en ejecución. HDFS está iniciado para este laboratorio; utilizará los servicios de cálculo cuando aprenda a enviar trabajos.
Guarde esas líneas de configuración como evidencia, en lugar de escribir usted mismo el valor esperado:
grep -A 1 '<name>mapreduce.framework.name</name>' /etc/labex-bigdata/hadoop/mapred-site.xml > /home/labex/project/output/execution-setting.txt
Para una tabla temporal diminuta, el sistema de archivos local puede ser suficiente. Para archivos históricos compartidos por trabajos de Hadoop, el destino de HDFS sí importa. Elegir una herramienta comienza por una necesidad, en lugar de subir automáticamente todos los archivos a Hadoop.
Resuelva la misma ruta en dos sistemas de archivos
En este paso, leerá dos archivos preparados con un texto de ruta idéntico y demostrará qué sistema de archivos selecciona cada comando.
Solo para esta comparación, la preparación ha colocado un archivo diferente en /home/labex/project/data/location.txt en cada sistema de archivos. Esto es posible porque el sistema de archivos local y HDFS tienen árboles de directorios separados. El espacio de trabajo habitual del curso en HDFS es /user/labex; las rutas coincidentes de hoy permiten ver fácilmente la diferencia.
Una URI file:/// selecciona explícitamente el sistema de archivos local. Las tres barras combinan el separador del esquema con una ruta absoluta. Antes de ejecutar el siguiente comando, prediga si leerá la versión local o la compartida:
hdfs dfs -cat file:///home/labex/project/data/location.txt
Salida esperada:
Local store: draft product file
Aunque utilizó el cliente de Hadoop, la URI seleccionó un archivo local. Ahora seleccione HDFS explícitamente con la dirección del servicio que observó en el paso 1:
hdfs dfs -cat hdfs://localhost:9000/home/labex/project/data/location.txt
Salida esperada:
HDFS store: shared product file
Por último, omita el esquema y la dirección del servicio. Prediga qué versión elegirá el valor predeterminado del paso 1:
hdfs dfs -cat /home/labex/project/data/location.txt
Aparece la versión compartida de HDFS. Una ruta absoluta fija la ubicación dentro de un sistema de archivos; por sí sola no elige ese sistema de archivos. El comando habitual de Linux cat /home/labex/project/data/location.txt seguiría leyendo la versión local.
Guarde los tres resultados por separado para poder comparar sus predicciones con la evidencia:
hdfs dfs -cat file:///home/labex/project/data/location.txt > /home/labex/project/output/local-result.txt
hdfs dfs -cat hdfs://localhost:9000/home/labex/project/data/location.txt > /home/labex/project/output/hdfs-result.txt
hdfs dfs -cat /home/labex/project/data/location.txt > /home/labex/project/output/default-result.txt
Los resultados de HDFS y del sistema predeterminado deberían coincidir. Utilice diff, que no imprime nada cuando los archivos coinciden:
diff /home/labex/project/output/hdfs-result.txt /home/labex/project/output/default-result.txt
Este experimento explica por qué una ruta por sí sola puede resultar engañosa al diagnosticar problemas: compruebe tanto la ruta como el sistema de archivos al que pertenece.
Identifique los servicios de almacenamiento
En este paso, relacionará las operaciones de archivos con las funciones de NameNode y DataNode y reunirá sus observaciones del entorno.
HDFS separa la información del nombre y la ubicación de un archivo de sus datos. El NameNode administra el árbol de directorios y sabe qué DataNodes contienen los bloques del archivo. Los DataNodes almacenan esos bloques y proporcionan el contenido de los archivos. Piense en el catálogo de una biblioteca y sus estantes: el catálogo ayuda a localizar un libro; los estantes contienen sus páginas.
Cliente HDFS → NameNode: preguntar dónde están los datos del archivo
Cliente HDFS ↔ DataNode: transferir los datos del archivo
Un bloque es una porción de un archivo administrada por HDFS. Más adelante examinará directamente los bloques y las réplicas. Por ahora, compruebe que los servicios de estas dos funciones estén activos. systemctl is-active solicita al sistema operativo el estado de cada servicio indicado; este comando únicamente observa el estado:
systemctl is-active labex-hdfs-namenode labex-hdfs-datanode
Debería ver dos líneas active, una por servicio. Guarde esa observación:
systemctl is-active labex-hdfs-namenode labex-hdfs-datanode > /home/labex/project/output/storage-services.txt
HDFS también informa de su visión de los nodos de almacenamiento. dfsadmin -report es un informe administrativo de solo lectura. El comando siguiente utiliza la identidad de servicio hdfs preparada, mediante sudo -u hdfs, únicamente para leer ese informe; siga realizando el trabajo habitual con archivos con su propia identidad labex:
sudo -u hdfs /usr/local/bin/hdfs dfsadmin -report
Busque Live datanodes (1) y un nodo cuyo Decommission Status sea Normal. La capacidad, el espacio utilizado, los identificadores de los equipos y las marcas de tiempo varían; esos valores no tienen que coincidir con los de la máquina virtual de otro estudiante. Un nodo activo se comunica con el NameNode, mientras que Normal significa que no se está retirando del servicio.
Guarde el informe:
sudo -u hdfs /usr/local/bin/hdfs dfsadmin -report > /home/labex/project/output/storage-report.txt
Este es el modo pseudodistribuido de un solo nodo: procesos de servicio de Hadoop independientes se ejecutan en una máquina. En modo local, un programa puede trabajar con archivos locales sin servicios de HDFS; en un clúster de varias máquinas, los servicios y el almacenamiento se reparten entre equipos. Ver un solo DataNode aquí no demuestra que se pueda sobrevivir al fallo de una máquina completa.
Cuando envíe un trabajo más adelante, el ResourceManager de YARN asignará recursos y un NodeManager administrará el trabajo en cada máquina de ejecución. Las observaciones de almacenamiento de hoy no requieren un trabajo en ejecución.
Prepare un informe pequeño concatenando las observaciones guardadas. cat acepta varias rutas de entrada locales en orden; > guarda su contenido combinado:
cat /home/labex/project/output/default-filesystem.txt /home/labex/project/output/execution-setting.txt /home/labex/project/output/storage-services.txt /home/labex/project/output/storage-report.txt > /home/labex/project/output/environment-report.txt
Vuelva a leerlo:
cat /home/labex/project/output/environment-report.txt
Localice la URI del sistema de archivos, el ajuste yarn, los dos estados de servicio y el número de nodos activos. Ahora tiene evidencia que relaciona sus comandos con el entorno real. A continuación, administrará el ciclo de vida de un archivo dentro del sistema de archivos correcto.
Resumen
Examinó el sistema de archivos y la opción de ejecución configurados, y después utilizó rutas locales, explícitas de HDFS y predeterminadas para demostrar de dónde procedían los datos. Relacionó esos resultados con la función de metadatos del NameNode y la función de almacenamiento del DataNode, y reconoció las limitaciones de un entorno de aprendizaje de una sola máquina.
Su próxima tarea consiste en administrar las entradas de forma deliberada: copiar, archivar, exportar, medir y eliminar únicamente los archivos temporales previstos.



