¿Qué es la caché distribuida en Hadoop?

Hadoop es un marco de trabajo de código abierto y utiliza almacenamiento distribuido, así como el procesamiento de grandes conjuntos de datos utilizando HDFS y MapReduce. Tiene NameNodes que almacenan los metadatos y DataNodes que almacenan los datos reales en HDFS. Cuando necesitamos procesar los grandes conjuntos de datos, lo hace un programa escrito por los usuarios y luego el procesamiento se realiza en paralelo en los DataNodes. En el marco de Hadoop, hay ciertos archivos que los trabajos de MapReduce necesitan con frecuencia. Si hay una cantidad de mapeadores en ejecución, cada vez que sea necesario leer los archivos de HDFS, la latencia aumentará a medida que aumente el tiempo de búsqueda. Entonces, en lugar de leer los archivos cada vez que se necesitan, los archivos se pueden copiar y enviar a todos los DataNodes. Este mecanismo se llama caché distribuida en Hadoop.

Trabajo de caché distribuida en Hadoop

  • Hadoop copia los archivos especificados por las opciones como –files, -libjars y –archives en el HDFS cuando se inicia un trabajo. Luego, el Administrador de nodos copiará los archivos de HDFS a la memoria caché para que cuando se ejecute una tarea, pueda acceder a los archivos. Los archivos pueden denominarse como localizados a medida que se copian en la memoria caché o en el disco local.
  • En el caché, el recuento del número de tareas que utilizan cada archivo se mantiene como referencia por el Administrador de nodos. El recuento de referencia de los archivos se convierte en 1 antes de que se ejecute la tarea. Pero después de que la tarea se haya ejecutado, el recuento disminuye en 1. Cuando el recuento se convierte en 0, el archivo se puede eliminar ya que no se está utilizando. Cuando el caché de un nodo alcanza su cierto tamaño, la eliminación de un archivo se realiza para que los nuevos archivos puedan acomodarse. El tamaño del caché se puede cambiar en la propiedad de configuración. El tamaño de la caché distribuida en Hadoop es por defecto de 10 GB.
  • MapReduce se vuelve más lento que el caché en proceso si tiene sobrecarga. Para superar esta situación, el caché distribuido puede serializar los objetos, pero incluso esto tiene pocos problemas. La reflexión es un proceso utilizado para investigar el tipo de información durante el tiempo de ejecución que es muy lento. Además, se vuelve muy difícil en la serialización donde almacena el nombre completo del clúster, el nombre de la clase junto con referencias a otras instancias presentes en las variables miembro.

Implementación de Hadoop en caché distribuida

  • Para usar el caché distribuido para una aplicación, debemos asegurarnos de que para distribuir un archivo entre los nodos; El archivo debe estar primero disponible. Por lo tanto, debemos copiar los archivos a HDFS y también debemos verificar que se pueda acceder al archivo a través de URI que se pueden encontrar accediendo a core-site.xml. Luego, el trabajo MapReduce copia el archivo de caché a todos los nodos antes de que las tareas comiencen a ejecutarse en esos nodos.
  • Entonces, para implementar la caché distribuida, necesitamos copiar los archivos a HDFS y podemos verificar si esto se hace o no a través del comando hdfs dfs –put /path/samplefile.jar. Además, la configuración del trabajo debe configurarse para la aplicación y debe agregarse a la clase de controlador.
  • Los archivos que solo el propietario puede leer, van a la memoria caché privada, mientras que la memoria caché compartida tiene los archivos que se pueden leer en todo el mundo. El archivo que se agrega al caché se usa sin restricciones en todas las máquinas del clúster como un archivo local. Las siguientes llamadas a la API se pueden usar para agregar los archivos al caché.

Código:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

El intercambio de archivos de caché distribuidos en los nodos esclavos depende de si los archivos de caché distribuida son privados o públicos. Los archivos privados de caché distribuida se almacenan en caché en el directorio local del usuario que es privado para el usuario y estos trabajos son necesarios para los trabajos del usuario. En el caso de los archivos de caché distribuidos públicos, los archivos se almacenan en caché en el directorio global. El acceso a los archivos en caso de caché pública se configura de manera que sean visibles para todos los usuarios. Además, el archivo de caché distribuido se vuelve privado o público, según el permiso del sistema de archivos.

Beneficios de la caché distribuida en Hadoop

Con el uso de la memoria caché distribuida, se agregan muchas características ventajosas al marco Hadoop. A continuación se detallan los beneficios de usar caché distribuida:

1. Caché distribuido en un solo punto de falla

En caso de falla de un nodo, no hará que la caché falle por completo. Porque la caché distribuida se ejecuta como un proceso independiente o independiente en los distintos nodos. Entonces, si la falla de la memoria caché ocurre en un nodo, no significa que la memoria caché completa también deba fallar.

2. Consistencia de los datos

Mediante el uso del algoritmo Hash, se puede determinar qué pares clave-valor pertenecen a qué nodo. Además, el caché distribuido en Hadoop monitorea o rastrea la modificación de marca de tiempo realizada en los archivos de caché e informa que hasta que el trabajo se haya ejecutado, un archivo no debe cambiar. Por lo tanto, los datos nunca se vuelven inconsistentes debido al estado único del clúster de caché.

3. Almacenamiento de datos complejos

El caché distribuido en el marco de Hadoop ofrece la ventaja de almacenar en caché los archivos de solo lectura como archivos de texto, archivos jar, etc. y luego transmitirlos a los nodos de datos. Debido a esto, una copia del archivo se almacena en cada nodo de datos. Con la función de caché distribuida, se distribuyen y almacenan archivos complejos como un jar, etc.

Conclusión

La caché distribuida proporciona eficiencia porque los archivos se copian una vez para cada trabajo. Además, tiene la capacidad de almacenar en caché los archivos que no están archivados en esclavos. El uso de caché distribuida es una ventaja adicional y depende del desarrollador para hacer el mejor uso de esta función.

Artículos recomendados

Esta es una guía de caché distribuida en Hadoop. Aquí discutimos qué es la caché distribuida en Hadoop, su trabajo, implementación y beneficios. También puede consultar nuestros otros artículos relacionados para obtener más información:

  1. Ventajas de Hadoop
  2. Instalar Hadoop
  3. ¿Qué es Head in Git?
  4. Ecosistema Apache Hadoop
  5. Variables en JavaScript

Categoría: