El sistema distribuido de ficheros de Hadoop, como se puede observar en la ilustración 27, cuenta con dos grandes elementos el Namenode y los DataNode, estos trabajando en conjunto dividen los ficheros en bloques (de 128 Mb) y generan copias (según lo establecido por las configuraciones propias) a través de los nodos.
Ilustración 27 Arquitectura HDFS: Fuente Apache (2019)
Por buenas prácticas, la replicación de los datos se establece en un nivel 3, es decir, cada bloque se guardará en tres de los Nodos Esclavos del Clúster. En caso de requerir más duplicidad de los datos por cualquier motivo se debe considerar el espacio en disco que todas estas copias pueden ocupar.
La función del Namenode es almacenar la meta data, la cual es información sobre: ¿Cómo es el Clúster?
¿Cuáles son los Esclavos? Enrutamiento de los Nodos.
Es importante recordar que para inicializar el namenode, después de haber configurado los ficheros correspondientes, se debe ejecutar el comando:
Al finalizar correctamente este comando se puede observar un directorio current en el directorio /datos/namenode:
Ilustración 28 Archivos directorio Current Namenode. Fuente propia.
Y detallando los ficheros que se van guardando a través de la interacción con el HDFS se puede ver que se encuentran varios EDITS y FSIMAGE, encargados de gestionar los cambios que se producen en el Clúster:
Ilustración 29 Flujo de ficheros metadatos HDFS Namenode. Fuente propia
De acuerdo a la ilustración, los edits son los cambios que se generan en el HDFS, el edit in progress es donde se están guardando los datos en el momento y finalmente el Fsimage es una
captura de un momento concreto del estado de HDFS. El fsimage y los edits se cargan en memoria mientras el edits en progress guarda la información.
Todo el proceso anterior es automático, y es gestionado por el proceso Secondarynamenode,
por lo cual no se debe y tampoco es necesario interactuar directamente con todo esto.
Por otro lado, en los Datanodes es donde se almacena los bloques generados a partir de los archivos que se cargan al sistema, allí de igual formar se genera una estructura de directorios y archivos a partir de un directorio current.
4.3.1.3. ¿Cómo es usado en el modelo?
Por medio de la configuración establecida en el apartado anterior se define un Nodo Maestro el cual administra a los nodos Workers y establece un nivel de replicación de 2, además, el tamaño de los bloques que se generan, a partir del guardado de ´cualquier tipo de información, es de 128 Mb.
En cuanto a los ficheros que se establecen allí por medio de los comandos hdfs dfs son los siguientes:
tmp Donde se guardará logs relacionados con la ejecución de los procesos de HIVE, YARN
y HUE. Gracias a esto se puede en algún punto llegar a depurar los errores que se van dando en el transcurso de la ejecución de los diferentes procesos involucrados.
User/Hive/Warehouse Aquí es donde se guarda toda la información insertada a la bases de datos, en este caso la del SECOP, se tiene también las diferentes tablas creadas y los bloques guardados a través de los nodos del Clúster
Ilustración 30 Directorio de la tabla procesos Base de Datos SECOP. Fuente propia
Dando un vistazo de la interacción generada a partir de las pruebas del modelo, se puede evidenciar la carga de la información en la tabla de procesos en forma de archivos, replicados en dos nodos del Clúster en forma de bloques.
Si se observa el detalle de cualquiera de estos archivos se obtiene información de donde se encuentra disponible cada uno de los bloques.
4.3.1.4. ¿Qué más se puede hacer con él?
Snapshot: Los Snapshot son una copia instantánea de un fichero en un momento determinado. En caso de requerirse es posible sacar snapshots de la información, esto con el objeto de recuperar algún elemento que haya sido borrado accidentalmente o que se encuentre corrupto. Todo esto se resume en tres aspectos importantes que cualquier administrador de un sistema HDFS debe considerar:
Backups Recuperación Histórico
Para hacer uso de esta propiedad del HDFS hacemos lo siguiente:
a. Ejecutar el comando para activar el snapshot de la base de datos:
hdfs dfsadmin –allowSnapshot /user/hive/warehouse/secop.db
b. Ir a la ruta del bloque generado a partir del archivo, haciendo uso de la terminal, en los directorios datanode, para esto se hace uso del comando fsck del HDFS junto con los flags –blocks –locations -files
hdfs fsck /user/hive/warehouse/secop.db/procesos/000000_0_copy_10 -blocks - locations -files
c. Se genera el snapshot con el comando
d. Observar el fichero con el comando dfs –ls
hdfs dfs -ls /user/hive/warehouse/secop.db/.snapshot/snapsecop
e. En caso de requerirse copiar el snapshot, simplemente se ejecuta el siguiente comando:
hdfs dfs –cp /user/hive/warehouse/secop.db/.snapshot/snapsecop/procesos
4.3.1.5. ¿Cómo más se puede complementar?
Por medio de la configuración REST API para el WebHDFS se puede acceder a la data con herramientas como HUE, esto llega a facilitar el manejo y administración de la información en el sistema. Cuenta tanto con su autenticación, usuarios Proxy, el Cross Site Request Forgery Prevention lo que en última medida busca garantizar la seguridad y la integridad de los datos.
Como se evidencia en la ilustración, gracias a HUE se puede ver el detalle de cada fichero cargado al HDFS. En instancia es similar al Browser de la administración web del hdfs al cual se accede desde el puerto 9870 pero este permite ver la información guardada en el bloque de información.