Hadoop et Django, est-il possible?
De ce que j'ai compris, Hadoop est un système de stockage distribué truc. Cependant, ce que je ne comprends vraiment pas ce qui est, peut-on remplacer SGBDR(MySQL, Postgresql, Oracle) avec Hadoop? Ou est Hadoop est juste un autre type de système de fichiers et nous POUVONS exécuter SGBDR sur elle?
Aussi, peut Django intégré avec Hadoop? D'habitude, combien de frameworks web (ASP.NET, PHP, Java(JSP,JSF, etc) ) intégration avec Hadoop?
Je suis un peu confus avec Hadoop vs SGBDR et je vous serais reconnaissant de toute explication.
(Désolé, j'ai lu la documentation de nombreuses fois, mais peut-être à cause de mon manque de connaissances en anglais, - je trouver de la documentation est un peu confus, la plupart du temps)
- Je n'ai pas utilisé Hadoop. Je viens de lire la première page. Je pense que c'est juste un système de fichiers de la solution. Il ne remplacera pas un SGBDR, et peut ne pas bien fonctionner avec un. Je pense que mettre une base de données sur un lecteur logique qui est réparti sur plusieurs machines peuvent causer de graves problèmes de performances; que des bons de souscription de plus de recherche si vous allez essayer.
- Hadoop travaux sur la plaine des fichiers volumineux et n'a pas d'indexation. Si vous souhaitez un accès aléatoire aux données dont vous avez besoin HBase. Ils reposent tous deux sur HDFS, qui gère de gros fichiers en cluster. Je vais donner une meilleure explication plus tard 🙂
- s'il vous plaît, je ne peux pas attendre pour elle :). Jusqu'à présent, toutes les lectures que j'ai vécu juste de me rendre plus confus.
Vous devez vous connecter pour publier un commentaire.
Qu'est-ce que Hadoop?
Imaginer la suite de provocation: vous avez beaucoup de données, et avec beaucoup je veux dire au moins Téraoctets. Vous voulez transformer ces données ou en extraire des informations et les processus dans un format qui est indexé, comprimé ou "digéré" d'une manière de sorte que vous pouvez travailler avec elle.
Hadoop est capable de paralléliser un tel travail de traitement et d', voici la meilleure partie, prend soin des choses comme le stockage redondant des fichiers, de la distribution de la tâche sur les différentes machines du cluster, etc (Oui, vous avez besoin d'un cluster, sinon Hadoop n'est pas en mesure de compenser la perte de performance du cadre).
Si vous prenez un premier regard sur l'écosystème Hadoop, vous trouverez 3 grandes modalités: HDFS(Hadoop système de fichiers), Hadoop lui-même(avec MapReduce) et HBase(la "base de données" parfois colonne magasin, ce qui ne correspond pas exactement)
HDFS est le système de fichiers utilisé par les deux Hadoop et HBase. C'est une couche supplémentaire sur la partie supérieure de la normale du système de fichiers sur vos hôtes. HDFS tranches les Fichiers téléchargés par morceaux (généralement de 64 mo) et les tient à disposition dans le cluster et prend soin de leur réplication.
Quand Hadoop devient une tâche à exécuter, il obtient le chemin d'accès des fichiers d'entrée sur le HDFS, le chemin de la sortie, un Mappeur et un Réducteur de Classe. Le Mappeur et le Réducteur est généralement une classe Java passé dans un fichier JAR.(Mais avec Hadoop Streaming vous pouvez utiliser n'importe quel comandline outil que vous voulez). Le mappeur est appelé à traiter chaque entrée (généralement par ligne, par exemple: "retourne 1 si la ligne contient une mauvaise F* word") des fichiers d'entrée, la sortie est transmis à l'réducteur, qui fusionne la seule des sorties dans un autre format désiré (e.g: addition de nombres). C'est un moyen facile d'obtenir un "gros mot" comptoir.
Le truc cool, c': le calcul de la cartographie est effectuée sur le nœud: vous traitez les morceaux de façon linéaire et que vous déplacez simplement le semi-digérée (généralement de petite taille) des données sur le réseau pour les réducteurs.
Et si l'un des nœuds meurt: il y a un autre avec les mêmes données.
HBase prend avantage du système de stockage distribué des fichiers et les stocke ses tableaux, découpé en morceaux sur le cluster. HBase donne, contrairement à Hadoop, l'accès aléatoire aux données.
Comme vous le voyez Hadoop et HBase sont très différents de RDMBS. Aussi HBase est en manque de beaucoup de concepts de SGBDR. La modélisation des données avec les déclencheurs, preparedstatements, les clés étrangères etc. n'est pas la chose HBase a été pensé à faire (je ne suis pas sûr à 100% sur ce, donc corrigez-moi 😉 )
Peut Django intégré avec Hadoop?
Pour Java c'est facile: Hadoop est écrit en Java et toutes les API sont là, prêts à l'emploi.
Pour Python/Django, je ne sais pas (encore), mais je suis sûr que vous pouvez faire quelque chose avec Hadoop streaming/Jython comme un dernier recours.
J'ai trouvé ce qui suit: Hadoopy et Python dans les Cartographes et les Réducteurs.
La teinte, L'INTERFACE utilisateur Web pour Hadoop est basé sur Django!
Django peut se connecter avec la plupart des SGBDR, de sorte que vous pouvez l'utiliser avec une solution basée sur Hadoop.
Gardez à l'esprit, Hadoop est beaucoup de choses, donc, précisément, vous voulez quelque chose avec une faible latence, comme HBase, n'essayez pas de l'utiliser avec la Ruche ou de l'Impala.
Python a une épargne en fonction de liaison, happybase, qui vous permettent de requête Hbase.
De base (!) exemple de Django intégration avec Hadoop
[LIEN SUPPRIMÉ]
- Je utiliser Oozie api REST pour l'exécution du travail, et "hadoop chat" pour saisir les résultats des tâches (en raison de HDFS' nature distribuée). Le mieux appoach est d'utiliser quelque chose comme Hoop pour obtenir des données HDFS. De toute façon, ce n'est pas une solution simple.
P. S. j'ai refait ce code et l'a placé dans https://github.com/Obie-Wan/django_hadoop.
Maintenant, il est séparé de django app.