HBase
 sql >> Base de données >  >> NoSQL >> HBase

Cloudera Impala :requêtes en temps réel dans Apache Hadoop, pour de vrai

Après une longue période d'efforts d'ingénierie intenses et de commentaires des utilisateurs, nous sommes très heureux et fiers d'annoncer le projet Cloudera Impala. Cette technologie est révolutionnaire pour les utilisateurs de Hadoop, et nous ne prenons pas cette affirmation à la légère.

Lorsque Google a publié son article Dremel en 2010, nous avons été aussi inspirés que le reste de la communauté par la vision technique d'apporter une capacité de requête ad hoc en temps réel à Apache Hadoop, en complément du traitement par lots MapReduce traditionnel. Aujourd'hui, nous annonçons une base de code open source entièrement fonctionnelle qui répond à cette vision - et, selon nous, un peu plus - que nous appelons Cloudera Impala. Un binaire Impala est maintenant disponible sous forme de version bêta publique, mais si vous préférez tester Impala via une machine virtuelle pré-cuite, nous en avons également un pour vous. Vous pouvez également consulter le code source et le harnais de test sur Github dès maintenant.

Impala relève la barre des performances des requêtes tout en conservant une expérience utilisateur familière. Avec Impala, vous pouvez interroger des données, qu'elles soient stockées dans HDFS ou Apache HBase - y compris les fonctions SELECT, JOIN et d'agrégation - en temps réel. De plus, il utilise les mêmes métadonnées, syntaxe SQL (Hive SQL), pilote ODBC et interface utilisateur (Hue Beeswax) qu'Apache Hive, fournissant une plate-forme familière et unifiée pour les requêtes par lots ou en temps réel. (Pour cette raison, les utilisateurs de Hive peuvent utiliser Impala avec peu de temps de configuration.) La première version bêta inclut la prise en charge des fichiers texte et des SequenceFiles; SequenceFiles peut être compressé en Snappy, GZIP et BZIP (avec Snappy recommandé pour des performances maximales). La prise en charge de formats supplémentaires, notamment Avro, RCFile, les fichiers texte LZO et le format de colonne Parquet, est prévue pour la sortie de production.

Pour éviter la latence, Impala contourne MapReduce pour accéder directement aux données via un moteur de requête distribué spécialisé très similaire à ceux que l'on trouve dans les RDBMS parallèles commerciaux. Le résultat est une performance d'un ordre de grandeur plus rapide que Hive, selon le type de requête et de configuration. (Voir la FAQ ci-dessous pour plus de détails.) Notez que cette amélioration des performances a été confirmée par plusieurs grandes entreprises qui ont testé Impala sur des charges de travail réelles depuis plusieurs mois maintenant.

Une vue architecturale de haut niveau est ci-dessous :

Cette approche présente de nombreux avantages par rapport aux autres approches d'interrogation des données Hadoop, notamment : :

  • Grâce au traitement local sur les nœuds de données, les goulots d'étranglement du réseau sont évités.
  • Un magasin de métadonnées unique, ouvert et unifié peut être utilisé.
  • La conversion coûteuse du format de données n'est pas nécessaire et ne génère donc aucune surcharge.
  • Toutes les données sont immédiatement interrogeables, sans délai pour l'ETL.
  • Tout le matériel est utilisé pour les requêtes Impala ainsi que pour MapReduce.
  • Un seul pool de machines est nécessaire pour évoluer.

Nous vous encourageons à lire la documentation pour plus de détails techniques.

Enfin, nous aimerions répondre à quelques questions qui, selon nous, seront populaires :

Impala est-il open source ?
Oui, Impala est 100 % open source (licence Apache). Vous pouvez consulter le code par vous-même sur Github dès aujourd'hui.

En quoi Impala est-il différent de Dremel ?
La première et principale différence est qu'Impala est open source et accessible à tous, tandis que Dremel est la propriété de Google.

Techniquement, Dremel atteint des temps de réponse interactifs sur de très grands ensembles de données grâce à l'utilisation de deux techniques :

  • Un nouveau format de stockage en colonnes pour les données/données relationnelles imbriquées avec des structures imbriquées
  • Algorithmes d'agrégation évolutifs distribués, qui permettent de calculer les résultats d'une requête sur des milliers de machines en parallèle

Cette dernière est empruntée aux techniques développées pour les SGBD parallèles, qui ont également inspiré la création d'Impala. Contrairement à Dremel décrit dans l'article de 2010, qui ne pouvait gérer que des requêtes sur une seule table, Impala prend déjà en charge l'ensemble complet des opérateurs de jointure qui sont l'un des facteurs qui rendent SQL si populaire.

Afin de tirer pleinement parti des avantages en termes de performances démontrés par Dremel, Hadoop disposera bientôt d'un format de stockage binaire en colonne efficace appelé Parquet. Mais contrairement à Dremel, Impala prend en charge une gamme de formats de fichiers populaires. Cela permet aux utilisateurs d'exécuter Impala sur leurs données existantes sans avoir à les "charger" ou à les transformer. Il permet également aux utilisateurs de décider s'ils souhaitent optimiser la flexibilité ou simplement les performances pures.

Pour résumer, Impala plus Parquet atteindra les performances de requête décrites dans l'article Dremel, mais surpassera ce qui y est décrit dans la fonctionnalité SQL.

À quel point les requêtes Impala sont-elles plus rapides que celles de Hive ?
Le degré précis d'amélioration des performances dépend fortement d'un certain nombre de facteurs :

  • Configuration matérielle :Impala est généralement capable de tirer pleinement parti des ressources matérielles et génère spécifiquement moins de charge CPU que Hive, ce qui se traduit souvent par une bande passante d'E/S agrégée observée plus élevée qu'avec Hive. Impala ne peut bien sûr pas aller plus vite que le matériel ne le permet, donc tout goulot d'étranglement matériel limitera l'accélération observée. Pour les requêtes purement liées aux E/S, nous constatons généralement des gains de performances de l'ordre de 3 à 4x.
  • Complexité de la requête :les requêtes qui nécessitent plusieurs phases MapReduce dans Hive ou qui nécessitent des jointures côté réduction verront une accélération plus élevée que, par exemple, de simples requêtes d'agrégation à table unique. Pour les requêtes avec au moins une jointure, nous avons apparemment des gains de performances de 7 à 45 X.
  • Disponibilité de la mémoire principale en tant que cache pour les données de table :si les données consultées via la requête sortent du cache, l'accélération sera plus spectaculaire grâce à l'efficacité supérieure d'Impala. Dans ces scénarios, nous avons constaté des accélérations de 20 à 90 x par rapport à Hive, même sur de simples requêtes d'agrégation.

Impala remplace-t-il MapReduce ou Hive, ou l'infrastructure d'entrepôt de données traditionnelle, d'ailleurs ?
Non. Il y aura toujours de nombreux cas d'utilisation viables pour MapReduce et Hive (par exemple, pour les charges de travail de transformation de données de longue durée) ainsi que pour les cadres d'entrepôt de données traditionnels (par exemple, pour des analyses complexes sur des ensembles de données limités et structurés). Impala est un complément à ces approches, prenant en charge les cas d'utilisation où les utilisateurs doivent interagir avec de très grands ensembles de données, dans tous les silos de données, pour obtenir rapidement des ensembles de résultats ciblés.

La version bêta d'Impala présente-t-elle des limitations techniques ?
Comme mentionné précédemment, les formats de fichiers pris en charge dans la première version bêta incluent les fichiers texte et les SequenceFiles, et de nombreux autres formats seront pris en charge dans la prochaine version de production. De plus, actuellement, toutes les jointures sont effectuées dans un espace mémoire pas plus grand que celui du plus petit nœud du cluster ; en production, les jointures se feront en mémoire agrégée. Enfin, aucune UDF n'est possible pour le moment.

Quelles sont les exigences techniques pour la version bêta d'Impala ?
Vous aurez besoin d'avoir CDH4.1 installé sur RHEL/CentOS 6.2. Nous recommandons fortement l'utilisation de Cloudera Manager (Free ou Enterprise Edition) pour déployer et gérer Impala, car il s'occupe automatiquement du déploiement distribué et des détails de surveillance.

Quelle est la politique d'assistance pour la version bêta d'Impala ?
Si vous êtes un client Cloudera existant avec un bogue, vous pouvez créer un ticket d'assistance client et nous essaierons de le résoudre dans la mesure du possible. Si vous n'êtes pas déjà client de Cloudera, vous pouvez utiliser notre instance JIRA publique ou la liste de diffusion impala-user, qui sera surveillée par les employés de Cloudera.

Quand l'Impala sera-t-elle généralement disponible pour une utilisation en production ?
Une baisse de production est prévue pour le premier trimestre 2013. Les clients pourront obtenir une assistance commerciale sous la forme d'un abonnement Cloudera Enterprise RTQ à ce moment-là.

Nous espérons que vous saisirez l'opportunité d'examiner le code source d'Impala, d'explorer la version bêta, de télécharger et d'installer la VM, ou toute combinaison des éléments ci-dessus. Vos commentaires dans tous les cas sont appréciés ; nous avons besoin de votre aide pour rendre Impala encore meilleure.

Nous vous apporterons d'autres mises à jour sur Impala à mesure que nous nous rapprochons de la disponibilité de la production. (Mise à jour :en savoir plus sur Impala 1.0.)

Ressources Impala :
– Code source Impala
– Téléchargements Impala (version bêta et VM)
– Documentation Impala
– JIRA public
– Liste de diffusion Impala
– Impala gratuit formation (Screencast)

(Ajouté le 30/10/2012) Articles tiers sur Impala :
– GigaOm : La requête en temps réel pour Hadoop démocratise l'accès à l'analyse de données volumineuses (22 octobre 2012)
– Wired : Un homme quitte Google et reconstruit une machine de requête top secrète (24 octobre 2012)
– InformationWeek : Cloudera lance une requête Hadoop en temps réel (24 octobre 2012)
– GigaOm :Cloudera fait de SQL un citoyen de premier ordre sur Hadoop (24 octobre 2012)
– ZDNet :Impala de Cloudera apporte Hadoop à SQL et à la BI (25 octobre 2012)
– Wired :Profil de Marcel Kornacker (29 octobre 2012)
– Dr Dobbs : Cloudera Impala – Traitement des pétaoctets à la vitesse de Pensée (29 octobre 2012)

Marcel Kornacker est l'architecte d'Impala. Avant de rejoindre Cloudera, il était le développeur principal du moteur de requête du projet F1 de Google.

Justin Erickson est le chef de produit d'Impala.