¿Qué es Hadoop?
Imagina el siguiente reto: tienes muchos datos, y con muchos quiero decir al menos Terabytes. Desea transformar estos datos o extraer algunas informaciones y procesarlas en un formato indexado, comprimido o "digerido" de forma que pueda trabajar con él.
Hadoop puede paralelizar ese trabajo de procesamiento y, aquí viene la mejor parte, se encarga de cosas como el almacenamiento redundante de los archivos, la distribución de la tarea en diferentes máquinas en el clúster, etc. (Sí, necesita un clúster , de lo contrario, Hadoop no podrá compensar la pérdida de rendimiento del marco).
Si echa un vistazo al ecosistema de Hadoop, encontrará 3 términos importantes: HDFS (Hadoop Filesystem), Hadoop mismo (con MapReduce) y HBase (el almacén de columnas "database", que no se ajusta exactamente)
HDFS es el sistema de archivos utilizado por Hadoop y HBase. Es una capa adicional en la parte superior del sistema de archivos regular en sus hosts. HDFS corta los archivos cargados en fragmentos (normalmente 64 MB) y los mantiene disponibles en el clúster y se ocupa de su replicación.
Cuando Hadoop ejecuta una tarea, obtiene la ruta de los archivos de entrada en el HDFS, la ruta de salida deseada, un asignador y una clase de reductor. Mapper and Reducer suele ser una clase Java pasada en un archivo JAR. (Pero con Hadoop Streaming puede usar cualquier herramienta de línea que desee). El asignador está llamado a procesar cada entrada (generalmente por línea, por ejemplo: "return 1 si la línea contiene una mala palabra F *") de los archivos de entrada, la salida pasa al reductor, que combina las salidas individuales en un deseado otro formato (por ejemplo: adición de números). Esta es una forma fácil de obtener un contador de "mala palabra".
Lo bueno: el cálculo de la asignación se hace en el nodo: procesa los fragmentos linealmente y mueve solo los datos semidigeridos (generalmente más pequeños) a través de la red a los reductores.
Y si uno de los nodos muere, hay otro con los mismos datos.
HBase aprovecha el almacenamiento distribuido de los archivos y almacena sus tablas, divididos en fragmentos en el clúster. HBase proporciona, al contrario que Hadoop, acceso aleatorio a los datos.
Como ve, HBase y Hadoop son bastante diferentes a RDMBS. También HBase carece de muchos conceptos de RDBMS. Modelar datos con desencadenadores, declaraciones preparadas, claves externas, etc. no es lo que HBase pensaba hacer (no estoy 100% seguro de esto, entonces corríjanme ;-))
Can Django integrado con Hadoop?
Para Java es fácil: Hadoop está escrito en Java y todas las API están ahí, listas para usar.
Para Python/Django No lo sé (todavía), pero estoy seguro de que puedes hacer algo con Hadoop streaming/Jython como último recurso. Encontré lo siguiente: Hadoopy y Python in Mappers and Reducers.
No he usado Hadoop. Acabo de leer la página principal. Creo que es solo una solución de sistema de archivos. No reemplazará un RDBMS, y puede que no funcione bien con uno. Creo que poner una base de datos en un disco lógico distribuido en varias máquinas puede causar serios problemas de rendimiento; eso garantiza más investigación si vas a intentarlo. – dokkaebi
Hadoop funciona en archivos grandes y no tiene indexación. Si desea acceso aleatorio a los datos, necesita HBase. Ambos crecen en HDFS, que administra archivos enormes en un clúster. Voy a dar una mejor explicación más tarde :-) – romedius
@romedius, por favor, no puedo esperar :). Hasta ahora, todas las lecturas que he realizado me hacen más confundido. –