Escucho mucho sobre Hadoop y MapReduce, pero todavía no tengo claro cómo se relacionan entre sí esas dos tecnologías de bases de datos emergentes. ¿Puedes aclarar?
Hadoop es un marco para la informática y los datos distribuidos. En otras palabras, es excelente para almacenar grandes conjuntos de datos semiestructurados. (Si una colección de datos semiestructurados realmente puede considerarse un «conjunto» es una pregunta interesante, pero probablemente pueda adivinar lo que quiero decir). Los datos se pueden almacenar de forma redundante, por lo que la falla de un disco no da como resultado la pérdida de datos. Hadoop también es muy bueno en la informática distribuida: procesa grandes conjuntos de datos rápidamente en varias máquinas.
MapReduce es un modelo de programación para procesar grandes conjuntos de datos semiestructurados. ¿Qué es un modelo de programación, preguntas? Es una forma de abordar y resolver un problema determinado. Por ejemplo, en una base de datos relacional, realizamos consultas utilizando un lenguaje basado en conjuntos, es decir, SQL. Le decimos al idioma el resultado que queremos y dejamos que el sistema averigüe cómo producirlo. Con un lenguaje más tradicional (C ++, Java), tendemos a detallar, paso a paso, cómo solucionar el problema. Esos son dos modelos de programación diferentes. MapReduce es otro más.
MapReduce y Hadoop son independientes entre sí pero, en la práctica, funcionan bien juntos, por lo que a menudo los encontramos mencionados al mismo tiempo.