Impala - Présentation

Qu'est-ce qu'Impala?

Impala est un moteur de requête SQL MPP (Massive Parallel Processing) pour traiter d'énormes volumes de données stockées dans un cluster Hadoop. Il s'agit d'un logiciel open source écrit en C ++ et Java. Il offre des performances élevées et une faible latence par rapport aux autres moteurs SQL pour Hadoop.

En d'autres termes, Impala est le moteur SQL le plus performant (offrant une expérience semblable à celle d'un SGBDR) qui offre le moyen le plus rapide d'accéder aux données stockées dans Hadoop Distributed File System.

Pourquoi Impala?

Impala combine la prise en charge SQL et les performances multi-utilisateurs d'une base de données analytique traditionnelle avec l'évolutivité et la flexibilité d'Apache Hadoop, en utilisant des composants standard tels que HDFS, HBase, Metastore, YARN et Sentry.

  • Avec Impala, les utilisateurs peuvent communiquer avec HDFS ou HBase à l'aide de requêtes SQL d'une manière plus rapide par rapport à d'autres moteurs SQL comme Hive.

  • Impala peut lire presque tous les formats de fichiers tels que Parquet, Avro, RCFile utilisés par Hadoop.

Impala 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 orientées batch ou en temps réel.

Contrairement à Apache Hive, Impala is not based on MapReduce algorithms. Il implémente une architecture distribuée basée surdaemon processes qui sont responsables de tous les aspects de l'exécution des requêtes qui s'exécutent sur les mêmes machines.

Ainsi, cela réduit la latence d'utilisation de MapReduce et cela rend Impala plus rapide qu'Apache Hive.

Avantages d'Impala

Voici une liste de quelques avantages notés de Cloudera Impala.

  • Grâce à impala, vous pouvez traiter les données stockées dans HDFS à une vitesse fulgurante grâce aux connaissances SQL traditionnelles.

  • Étant donné que le traitement des données est effectué là où les données résident (sur le cluster Hadoop), la transformation et le déplacement des données ne sont pas nécessaires pour les données stockées sur Hadoop, tout en travaillant avec Impala.

  • À l'aide d'Impala, vous pouvez accéder aux données stockées dans HDFS, HBase et Amazon s3 sans connaissance de Java (tâches MapReduce). Vous pouvez y accéder avec une idée de base des requêtes SQL.

  • Pour écrire des requêtes dans les outils métier, les données doivent passer par un cycle ETL (extraction-transform-load) compliqué. Mais, avec Impala, cette procédure est raccourcie. Les étapes chronophages du chargement et de la réorganisation sont surmontées avec les nouvelles techniques telles queexploratory data analysis & data discovery rendre le processus plus rapide.

  • Impala est le pionnier de l'utilisation du format de fichier Parquet, une disposition de stockage en colonnes optimisée pour les requêtes à grande échelle typiques des scénarios d'entrepôt de données.

Caractéristiques d'Impala

Ci-dessous sont les caractéristiques de cloudera Impala -

  • Impala est disponible gratuitement en open source sous la licence Apache.

  • Impala prend en charge le traitement des données en mémoire, c'est-à-dire qu'il accède / analyse les données stockées sur les nœuds de données Hadoop sans mouvement de données.

  • Vous pouvez accéder aux données à l'aide d'Impala à l'aide de requêtes de type SQL.

  • Impala offre un accès plus rapide aux données dans HDFS par rapport aux autres moteurs SQL.

  • En utilisant Impala, vous pouvez stocker des données dans des systèmes de stockage tels que HDFS, Apache HBase et Amazon s3.

  • Vous pouvez intégrer Impala à des outils de Business Intelligence tels que Tableau, Pentaho, Micro Strategy et Zoom Data.

  • Impala prend en charge différents formats de fichiers tels que LZO, Sequence File, Avro, RCFile et Parquet.

  • Impala utilise les métadonnées, le pilote ODBC et la syntaxe SQL d'Apache Hive.

Bases de données relationnelles et Impala

Impala utilise un langage de requête similaire à SQL et HiveQL. Le tableau suivant décrit certaines des différences clés entre SQL et le langage de requête Impala.

Impala Bases de données relationnelles
Impala utilise un langage de requête similaire à SQL qui est similaire à HiveQL. Les bases de données relationnelles utilisent le langage SQL.
Dans Impala, vous ne pouvez pas mettre à jour ou supprimer des enregistrements individuels. Dans les bases de données relationnelles, il est possible de mettre à jour ou de supprimer des enregistrements individuels.
Impala ne prend pas en charge les transactions. Les bases de données relationnelles prennent en charge les transactions.
Impala ne prend pas en charge l'indexation. Les bases de données relationnelles prennent en charge l'indexation.
Impala stocke et gère de grandes quantités de données (pétaoctets). Les bases de données relationnelles gèrent de plus petites quantités de données (téraoctets) par rapport à Impala.

Hive, Hbase et Impala

Bien que Cloudera Impala utilise le même langage de requête, le même métastore et l'interface utilisateur que Hive, il diffère de Hive et HBase sur certains aspects. Le tableau suivant présente une analyse comparative entre HBase, Hive et Impala.

HBase Ruche Impala
HBase est une base de données de magasin à colonnes larges basée sur Apache Hadoop. Il utilise les concepts de BigTable. Hive est un logiciel d'entrepôt de données. Grâce à cela, nous pouvons accéder et gérer de grands ensembles de données distribués, construits sur Hadoop. Impala est un outil pour gérer, analyser les données stockées sur Hadoop.
Le modèle de données de HBase est un grand magasin de colonnes. Hive suit le modèle relationnel. Impala suit le modèle relationnel.
HBase est développé en utilisant le langage Java. Hive est développé en utilisant le langage Java. Impala est développé en C ++.
Le modèle de données de HBase est sans schéma. Le modèle de données de Hive est basé sur un schéma. Le modèle de données d'Impala est basé sur un schéma.
HBase fournit des API Java, RESTful et Thrift. Hive fournit des API JDBC, ODBC et Thrift. Impala fournit des API JDBC et ODBC.
Prend en charge les langages de programmation tels que C, C #, C ++, Groovy, Java PHP, Python et Scala. Prend en charge les langages de programmation tels que C ++, Java, PHP et Python. Impala prend en charge tous les langages prenant en charge JDBC / ODBC.
HBase prend en charge les déclencheurs. Hive ne fournit aucun support pour les déclencheurs. Impala ne fournit aucun support pour les déclencheurs.

Toutes ces trois bases de données -

  • Sont des bases de données NOSQL.

  • Disponible en open source.

  • Prise en charge des scripts côté serveur.

  • Suivez les propriétés ACID comme la durabilité et la concurrence.

  • Utilisation sharding pour partitioning.

Inconvénients de l'Impala

Certains des inconvénients de l'utilisation d'Impala sont les suivants:

  • Impala ne fournit aucun support pour la sérialisation et la désérialisation.
  • Impala ne peut lire que des fichiers texte, pas des fichiers binaires personnalisés.
  • Chaque fois que de nouveaux enregistrements / fichiers sont ajoutés au répertoire de données dans HDFS, la table doit être actualisée.