sql >> Base de Datos >  >> NoSQL >> HBase

Introducción a la caché distribuida en Hadoop

En este tutorial, le proporcionaremos una descripción detallada de una caché distribuida en Hadoop . En primer lugar, comprenderemos brevemente qué es Hadoop, luego veremos qué es el caché distribuido en Hadoop.

También cubriremos el funcionamiento y la implementación de Hadoop Distributed Cache. Por fin en este blog también veremos las ventajas y desventajas del almacenamiento en caché distribuido en Hadoop.

Introducción a Hadoop

Es un mecanismo que proporciona el marco MapReduce para almacenar en caché los archivos que necesitan las aplicaciones. Puede almacenar en caché archivos como archivos de texto/datos de solo lectura y tipos más complejos como archivos comprimidos, archivos jar, etc.

Antes de comenzar con la caché distribuida, analicemos primero qué es Hadoop.

Hadoop es un marco de programación de código abierto basado en Java. Admite el procesamiento y almacenamiento de conjuntos de datos extremadamente grandes en un entorno distribuido. Hadoop sigue la topología Maestro-Esclavo.

El maestro es NameNode y el esclavo es DataNode. Datanode almacena datos reales en HDFS . Y realiza operaciones de lectura y escritura según la solicitud del cliente. Namenode almacena metadatos.

En Apache Hadoop, los fragmentos de datos se procesan en paralelo entre Datanodes, utilizando un programa escrito por el usuario. Si queremos acceder a algunos archivos de todos los Datanodes, colocaremos ese archivo en la memoria caché distribuida.

¿Qué es la caché distribuida en Hadoop?

Caché distribuida en Hadoop es una función proporcionada por el marco MapReduce. Distributed Cache puede almacenar archivos en caché cuando las aplicaciones los necesitan. Puede almacenar en caché archivos de texto de solo lectura, archivos comprimidos, archivos jar, etc.

Una vez que hayamos almacenado en caché un archivo para nuestro trabajo, Apache Hadoop lo pondrá a disposición en cada nodo de datos donde se estén ejecutando las tareas de asignación/reducción. Por lo tanto, podemos acceder a los archivos de todos los nodos de datos en nuestro trabajo de MapReduce.

Tamaño de caché distribuida

De forma predeterminada, el tamaño de la memoria caché distribuida es de 10 GB. Si queremos ajustar el tamaño de la memoria caché distribuida, podemos hacerlo usando local .caché .tamaño.

Implementación

Una aplicación que utilizará caché distribuida para distribuir un archivo:

  • Primero debe asegurarse de que el archivo esté disponible.
  • Después de eso, también asegúrese de que se pueda acceder al archivo a través de URL. Las URL pueden ser hdfs:// o https://.

Después de la validación anterior, si el archivo está presente en las URL mencionadas. El usuario de Hadoop menciona que es un archivo de caché para el caché distribuido. El trabajo de Hadoop MapReduce copiará el archivo de caché en todos los nodos antes de iniciar las tareas en esos nodos.

Siga el siguiente proceso:

a) Copie el archivo requerido al HDFS:

$ hdfs dfs-put/usuario/dataflair/lib/jar_file.jar

b) Configure la JobConf de la aplicación:

DistributedCache.addFileToClasspath(nueva ruta (“/user/dataflair/lib/jar-file.jar”), conf).

c) Agréguelo en la clase Driver.

Ventajas de la caché distribuida

  • Punto único de falla- Como la memoria caché distribuida se ejecuta en muchos nodos. Por lo tanto, la falla de un solo nodo no resulta en una falla completa del caché.
  • Coherencia de datos- Realiza un seguimiento de las marcas de tiempo de modificación de los archivos de caché. Luego, notifica que los archivos no deben cambiar hasta que se esté ejecutando un trabajo. Usando el algoritmo hash, el motor de caché siempre puede determinar en qué nodo reside una clave-valor en particular. Como sabemos, siempre hay un solo estado del clúster de caché, por lo que nunca es inconsistente.
  • Almacenar datos complejos: Distribuye archivos de texto simples de solo lectura. También almacena tipos complejos como frascos, archivos. Estos logros luego se desarchivan en el nodo esclavo.

Desventajas de la caché distribuida

Una caché distribuida en Hadoop tiene una sobrecarga que la hará más lenta que una caché en proceso:

a) Serialización de objetos – Debe serializar objetos. Pero el mecanismo de serialización tiene dos problemas principales:

  • Muy voluminoso – La serialización almacena el nombre completo de la clase, el clúster y los detalles del ensamblaje. También almacena referencias a otras instancias en variables miembro. Todo esto hace que la serialización sea muy voluminosa.
  • Muy lento – La serialización utiliza la reflexión para inspeccionar el tipo de información en tiempo de ejecución. La reflexión es un proceso muy lento en comparación con el código precompilado.

Conclusión

En conclusión, el caché distribuido, podemos decir que es una función proporcionada por MapReduce. Almacena archivos en caché cuando las aplicaciones lo necesitan. Puede almacenar en caché archivos de texto de solo lectura, archivos comprimidos, archivos jar, etc.

De forma predeterminada, el tamaño de la memoria caché distribuida es de 10 GB. Si encuentra este blog o tiene alguna consulta relacionada con la caché distribuida en Hadoop, no dude en compartirla con nosotros.