¿Cuál es el algoritmo de Apache Hadoop?
Bueno, la otra respuesta aquí le informa sobre los principios básicos alrededor de los cuales Hadoop puede haber sido diseñado (es decir, debe ser de código abierto, confiable, escalable, tolerante a fallas, etc.), pero no habla de ningún “algoritmo” que fue específicamente formulado en la pregunta, por lo tanto, agregaré mis dos centavos :). Espero que ayude al OP.
Lo primero es lo primero: ¿qué es exactamente Hadoop?
- ¿Qué temas básicos hay que saber en C ++ antes de aprender estructuras de datos y algoritmos?
- ¿Hay algún número cuyo producto y suma sea 121?
- ¿Las estructuras en lenguaje C son similares a los objetos en Java?
- ¿Cómo se escribe un programa que verifica todas las permutaciones de una cadena determinada y determina si es un palíndromo?
- ¿Cómo se puede desarrollar la lógica en la programación?
Hadoop es básicamente una forma de almacenar datos. Es posible que haya oído hablar de otras formas de almacenar datos (como NTFS, FAT, etc.). Estas formas se denominan básicamente un sistema de archivos. Entonces Hadoop es básicamente un sistema de archivos.
El Sistema de archivos Hadoop (denominado Sistema de archivos distribuidos de Hadoop o HDFS ) se especializa en almacenar datos en muchas máquinas diferentes (los llamamos grupos de servidores; cada servidor es generalmente una máquina virtual o VM), y luego ejecuta procesos distribuidos (o paralelos) / análisis a través de estos servidores. Dado que muchos servidores están involucrados (incluso pueden estar en cientos o miles), se pueden almacenar datos parciales en cada uno de ellos, y dado que el procesamiento (almacenamiento / recuperación / recuento, etc.) ocurre de manera paralela, se pueden manejar grandes cantidades de datos (por lo tanto Hadoop es generalmente sinónimo de Big data).
¿Cómo aprovechamos HDFS?
Ahora, dado que HDFS como sistema de archivos, realiza un seguimiento de los datos (qué datos se almacenan en qué máquina), genera redundancia (copias primarias y secundarias) y realiza las tareas básicas de administración de datos a nivel del sistema de archivos, por lo tanto, cualquier herramienta (como HBase o MongoDB) que se ejecuta sobre HDFS, puede aprovechar las características de HDFS como las API (por ejemplo, MongoDB tiene un conector para Hadoop, consulte – mongodb / mongo-hadoop). La mayoría de las herramientas para manejar grandes datos en estos días (Hbase, Hive, Apache Storm, Mongo, etc.) se ejecutan en HDFS.
Aunque no es necesario hacerlo , por ejemplo, en uno de los Productos que encabezo, estamos ejecutando MongoDB en SAN sin HDFS. Tenemos un entorno multi-fragmento (VM en un clúster), con los fragmentos (VM individuales que contienen partes de datos) administrados por MongoDB.
¿Hay algún algoritmo que pueda llamarse como el algoritmo principal de Hadoop?
Depende de cómo lo mires (ya que Hadoop es un sistema completo en sí mismo con múltiples componentes), pero la opinión más popular es que ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡!!!
Hablamos de que HDFS realiza un seguimiento de varias máquinas virtuales, cada una de las cuales almacena parte de nuestros datos. Por lo tanto, el algoritmo que ayuda a HDFS a realizar recados rápidamente en paralelo en tantas máquinas virtuales se llama MapReduce , y eso se puede llamar, de alguna manera, como el algoritmo de Hadoop (o la forma básica en que HDFS administra varios servidores en un clúster).
Entonces, ¿qué es MapReduce? El algoritmo de Hadoop
No es tan complejo: suponga que tiene que encontrar los 10 archivos más grandes entre un millón de archivos, ¡consume bastante tiempo! Pero ahora suponga que tiene los archivos reales, los nombres de archivo y sus tamaños almacenados en 1000 servidores (cada uno con 1000 archivos solamente), y le pide a cada uno de sus servidores que calcule sus propios 10 archivos más grandes, luego todos lo hacen en paralelo y ahora tiene 10,000 nombres de archivo y sus tamaños bastante rápido. El proceso principal ahora encuentra los 10 más grandes entre estos 10,000. El tiempo total que se tarda aquí es solo para escanear 11,000 registros en lugar de un millón (porque hicimos los 1000 iniciales en paralelo).
La primera tarea (que le da 1000 conjuntos de 10 cada uno), se llama la Tarea de Mapa, y la segunda tarea de consolidar los resultados de sus tareas de Mapa se llama Reducir Tarea – De ahí el nombre de MapReduce.
De manera similar, imagine las tareas de encontrar la suma de los atributos de un JSON (suma de la población en un país, cuando tiene una lista inteligente de ciudades en los grupos), la suma de almacenamiento tomada por los archivos de video, etc.
Ver: ¿Qué es MapReduce?
Sugerencias / Correcciones / Solicitudes de aclaración son bienvenidas 🙂