tutorial aks django hadoop rdbms

django - aks tutorial



Hadoop y Django, ¿es posible? (4)

Por lo que entendí, Hadoop es una cosa del sistema de almacenamiento distribuido. Sin embargo, lo que realmente no entiendo es, ¿podemos reemplazar RDBMS normal (MySQL, Postgresql, Oracle) con Hadoop? ¿O Hadoop es solo otro tipo de sistema de archivos y podemos ejecutar RDBMS en él?

Además, ¿puede Django integrarse con Hadoop? Por lo general, ¿cómo los frameworks web (ASP.NET, PHP, Java (JSP, JSF, etc.)) se integran con Hadoop?

Estoy un poco confundido con el Hadoop vs RDBMS y agradecería cualquier explicación. (Lo siento, leí la documentación muchas veces, pero tal vez debido a mi falta de conocimiento en inglés, la documentación me resulta un poco confusa la mayor parte del tiempo)


Ejemplo básico (!) De integración de Django con Hadoop [REMOVED LINK]

Uso apostar de Oozie REST para la ejecución de trabajos y ''gato de hadoop'' para obtener resultados de trabajo (debido a la naturaleza distribuida de HDFS). La mejor opción es usar algo como Hoop para obtener datos HDFS. De todos modos, esta no es una solución simple.

PD. Refactoreé este código y lo coloqué en https://github.com/Obie-Wan/django_hadoop . Ahora es una aplicación django separada.


Django se puede conectar con la mayoría de los RDMS, por lo que puede usarlo con una solución basada en Hadoop.

Tenga en cuenta que Hadoop es muchas cosas, por lo que, específicamente, si desea algo con baja latencia, como HBase, no intente usarlo con Hive o Impala.

Python tiene un enlace basado en el ahorro, happybase, que le permite consultar Hbase.



¿Qué es Hadoop?

Imagine el siguiente reto: tiene 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 ocupa 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 es no puede compensar la pérdida de rendimiento del marco).

Si echas un primer vistazo al ecosistema de Hadoop, encontrarás 3 términos importantes: HDFS (Hadoop Filesystem), Hadoop (con MapReduce) y HBase (la columna de "base de datos" a veces almacenada, 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 del mapeo se hace en el nodo: procesa los fragmentos linealmente y mueve los datos semi-digeridos (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 desencadenantes, declaraciones preparadas, claves externas, etc., no es lo que se pensaba que HBase (no estoy 100% seguro de esto, así que corríjanme ;-))

¿Puede Django integrarse 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 en Mappers and Reducers .