10 façons d'interroger Hadoop avec SQL

SQL: vieux et cassé. Hadoop: nouvelle chaleur. C'est la sagesse conventionnelle, mais le grand nombre de projets mettant un frontal SQL pratique sur les magasins de données Hadoop montre qu'il existe un réel besoin de produits exécutant des requêtes SQL sur des données qui se trouvent dans Hadoop, par opposition à la simple utilisation des rapports natifs de Hadoop ou à l'exportation de données Hadoop dans une base de données conventionnelle.

MapR produit sa propre distribution Hadoop et la dernière édition (4.0.1) la regroupe avec quatre moteurs distincts pour interroger le vial SQL Hadoop. Les quatre sont des systèmes de requête SQL importants pour Hadoop, mais il existe bien plus de technologies SQL-for-Hadoop, et ils sont conçus pour répondre à différents besoins et cas d'utilisation, de l'ésotérique à l'universel.

Tout d'abord, les quatre moteurs SQL fournis avec MapR:

Apache Hive: Il s'agit de la solution SQL-on-Hadoop d'origine, qui tente d'émuler le comportement, la syntaxe et les interfaces de MySQL, y compris un client de ligne de commande. Il comprend également une API Java et des pilotes JDBC pour ceux qui ont déjà investi dans des applications Java qui effectuent des requêtes de type MySQL. Malgré sa relative simplicité et sa facilité d'utilisation, Hive a été lent et en lecture seule, ce qui a provoqué un certain nombre d'initiatives pour l'améliorer.

Stinger: Hortonworks, producteur de sa propre distribution Hadoop, a lancé le projet Stinger afin de faire progresser le développement d'Apache Hive et d'améliorer ses performances. L'incarnation la plus récente du projet, Stinger.next, a des «temps de réponse aux requêtes inférieurs à la seconde» comme l'un de ses objectifs de conception, ainsi que la prise en charge des comportements transactionnels (insertions, mises à jour et suppressions). Ces changements devraient tous faire leurs débuts au cours des 18 prochains mois, avec d'autres fonctionnalités telles que l'analyse SQL à suivre.

Apache Drill: une implémentation open source de Dremel de Google (alias BigQuery), Drill a été conçu pour effectuer des requêtes à faible latence sur plusieurs types de magasins de données à la fois avec différentes interfaces de requête (telles que Hadoop et NoSQL), et pour être hautement évolutif. Drill est également destiné à exécuter des requêtes dans un large éventail de temps d'exécution, ne durant que quelques millisecondes pour s'exécuter pendant quelques minutes. MapR affirme que Drill est tourné vers l'avenir, pas seulement rétrocompatible, l'une des raisons pour lesquelles il a choisi de mettre ses propres efforts de développement derrière ce projet.

Spark SQL: Le projet Spark d'Apache est destiné au traitement parallélisé en temps réel des données Hadoop. Spark SQL s'appuie sur celui-ci pour permettre l'écriture de requêtes SQL sur des données. Une meilleure façon de le penser pourrait être Apache Hive pour Apache Spark, car il réutilise des éléments clés de la technologie Hive. En ce sens, c'est un complément pour ceux qui travaillent déjà avec Spark. (Un projet antérieur, Shark, a été subsumé dans celui-ci.)

Au-delà de ces quatre, six autres se démarquent:

Apache Phoenix: ses développeurs l'appellent un "skin SQL pour HBase" - un moyen d'interroger HBase avec des commandes de type SQL via un pilote JDBC intégré conçu pour des opérations de lecture / écriture hautes performances. Considérez cela comme une évidence pour ceux qui utilisent HBase, car il est open source, développé de manière agressive et équipé de fonctionnalités utiles telles que le chargement de données en masse.

Cloudera Impala: D'une certaine manière, Impala est une autre implémentation de Dremel / Apache Drill, conçue pour se développer sur Hive afin que les utilisateurs existants de Hive puissent en tirer le meilleur parti. Les données stockées dans HDFS ou HBase peuvent être interrogées et la syntaxe SQL est, de manière prévisible, la même qu'Apache Hive. Mais la principale différence entre Impala et Drill est qu'il n'est pas censé être indépendant de la source; il interroge exclusivement Hadoop.

HAWQ pour Pivotal HD: Pivotal fournit sa propre distribution Hadoop (Pivotal HD), et HAWQ est un composant propriétaire permettant d'effectuer des requêtes SQL dans HDFS. Par conséquent, il s'agit d'un produit uniquement Pivotal, bien que Pivotal se moque de son traitement SQL parallèle et de sa haute conformité aux normes SQL.

Presto: construit par les ingénieurs de Facebook et utilisé en interne dans cette entreprise, ce moteur de requête open source rappelle Apache Drill en ce qu'il est indépendant de la source. Il peut interroger à la fois Hive et Cassandra à l'aide de commandes SQL ANSI, et les développeurs peuvent étendre le système en écrivant des connecteurs pour celui-ci à l'aide de son interface de fournisseur de services. Certaines fonctions d'insertion de données sont prises en charge, mais elles restent très basiques: vous ne pouvez pas effectuer de mises à jour, uniquement des insertions.

Oracle Big Data SQL: Ce n'était qu'une question de temps avant qu'Oracle ne publie son propre frontal d'interrogation SQL pour Hadoop. Comme Drill, il peut interroger à la fois Hadoop et d'autres magasins NoSQL. Mais contrairement à Drill, il s'agit du propre produit d'Oracle, et il ne s'intègre qu'à Oracle Database 12c et plus, ce qui limite sérieusement le marché pour celui-ci.

IBM BigSQL: Ce n'était qu'une question de temps avant qu'IBM fasse de même, bien qu'il ait annoncé la première préversion technologique de BigSQL au début de 2013. Malheureusement, comme avec l'offre d'Oracle, elle est liée à un produit IBM spécifique sur le back-end - dans ce cas, Hadoop d'IBM, InfoSphere BigInsights. Cela dit, le frontal peut être un client JDBC / ODBC standard et les requêtes peuvent inclure des données provenant d'instances IBM DB2, Teradata ou PureData Systems for Analytics.