Je veux faire une analyse de données "en temps quasi réel" (de type OLAP) sur les données d'un HDFS.
Mes recherches ont montré que les trois frameworks mentionnés font état de gains de performances significatifs par rapport à Apache Hive. Quelqu'un a-t-il une expérience pratique de l'un ou de l'autre? Non seulement en termes de performances, mais aussi en termes de stabilité?
La comparaison entre Hive et Impala ou Spark ou Drill me semble parfois inappropriée. Les objectifs du développement de Hive et de ces outils étaient différents. Hive n'a jamais été développé pour le traitement de la mémoire en temps réel et est basé sur sur MapReduce. Il a été conçu pour le traitement par lots hors ligne un peu. Idéal pour les travaux de longue durée qui effectuent des opérations lourdes comme les jointures sur des ensembles de données très volumineux.
D'autre part, ces outils ont été développés en conservant le real-timeness
à l'esprit. Allez-y quand vous devez interroger des données peu volumineuses, qui peuvent être insérées dans la mémoire, en temps réel. Je ne dis pas que vous ne pouvez pas exécuter de requêtes sur votre BigData à l'aide de ces outils, mais vous repousseriez les limites si vous exécutez des requêtes en temps réel sur des PB de données, à mon humble avis.
Très souvent, vous auriez vu (ou lu) qu'une entreprise particulière possède plusieurs PB de données et qu'elle répond avec succès aux besoins en temps réel de ses clients. Mais en réalité, ces entreprises n'interrogent pas la totalité de leurs données la plupart du temps. Donc, l'important est une bonne planification, when to use what
. J'espère que vous comprenez ce que j'essaie de faire valoir.
Pour en revenir à votre véritable question, à mon avis, il est difficile de fournir une comparaison raisonnable à l'heure actuelle, car la plupart de ces projets sont loin d'être achevés. Ils ne sont pas encore prêts pour la production, à moins que vous ne soyez disposé à faire vous-même (ou peut-être beaucoup) de travail par vous-même. Et, pour chacun de ces projets, il y a certains objectifs qui sont très spécifiques à ce projet particulier.
For example
, Impala a été développé pour tirer parti de l'infrastructure Hive existante afin que vous n'ayez pas à recommencer à zéro. Il utilise les mêmes métadonnées que celles utilisées par Hive. Son objectif était d'exécuter des requêtes en temps réel sur votre entrepôt Hadoop existant. Alors que Drill a été développé pour être un not only Hadoop
projet. Et pour nous fournir une capacité de requête distribuée sur plusieurs plateformes de Big Data, dont MongoDB, Cassandra, Riak et Splunk. Shark est compatible avec Apache Hive, ce qui signifie que vous pouvez l'interroger en utilisant les mêmes instructions HiveQL que vous le feriez via Hive. La différence est que Shark peut renvoyer des résultats jusqu'à 30 fois plus rapidement que les mêmes requêtes exécutées sur Hive.
Impala se porte bien à l'heure actuelle et certaines personnes l'utilisent, mais je ne suis pas si sûr du reste du 2. Tous ces outils sont bons mais une comparaison équitable ne peut être faite qu'après les avoir essayés sur vos données et pour votre besoins de traitement. Mais selon mon expérience, Impala serait le meilleur pari en ce moment. Je ne dis pas que d'autres outils ne sont pas bons, mais ils ne sont pas encore suffisamment mûrs. Mais si vous souhaitez l'utiliser avec votre cluster Hadoop déjà en cours d'exécution (hadoop d'Apache par exemple), vous devrez peut-être faire un travail supplémentaire car Impala est utilisé presque par tout le monde comme fonctionnalité CDH.
Note: Toutes ces choses sont basées uniquement sur mon expérience. Si vous trouvez quelque chose de mal ou inapproprié, faites-le moi savoir. Les commentaires et suggestions sont les bienvenus. Et j'espère que cela répond à certaines de vos questions.
Voici une réponse de "Comment Impala se compare-t-elle à Shark?" de Reynold Xin, le leader de l'effort de développement de Shark à UC Berkeley AMPLab.