La relation entre l'architecture et ses similitudes et les différences avec la ruche Apache Impala de

A, Impala et relations Hive

impala est basé sur l'analyse de la grande ruche du moteur de recherche de données, ruche utilisation directe de métadonnées méta-base de données, ce qui signifie des métadonnées impala stockées dans Metastore ruche d'entre eux, et la grande majorité des impalas syntaxe SQL ruche compatible. Donc, vous devez installer impala, il doit être installé ruche, ruche pour assurer une installation réussie, et la nécessité de commencer la ruche de service Metastore.

Ruche des métadonnées comprenant méta base de données, table, etc. créé avec Ruche. Les métadonnées sont stockées dans une base de données relationnelle, comme Derby, MySQL comme.

les connexions clientes de service MetaStore, Metastore aller à la base de données de connexion de MySQL aux métadonnées d'accès. Avec un service de Metastore, vous pouvez avoir plusieurs connexions clientes simultanées et ces clients ne ont pas besoin de connaître le nom d'utilisateur de base de données MySQL et mot de passe, il suffit de se connecter Metastore le service.

nohup hive --service metastore >> ~/metastore.log 2>&1 &

Ruche adapté pour une requête de traitement par lots et l'analyse, et l'Impala est adapté pour les requêtes SQL interactives en temps réel. Ruche peut utiliser d'abord le processus de conversion de données, après utilisation Impala analyse rapide des données sur les résultats des ensemble de données traitement Hive.

Deux, Impala similitudes et les différences et Hive

outils Hive Impala et d'interrogation de données sont construites au-dessus de Hadoop varient d'adapter à la mise au point, mais le client utilise la vue Impala Hive ont beaucoup en commun, les métadonnées de la table de données, le pilote ODBC / JDBC, syntaxe SQL, le format de fichier flexible, des pools de ressources de stockage.

Mais l'Impala avec la plus grande différence est l' optimisation Hive: ne pas utiliser MapReduce informatique parallèle , bien que MapReduce est un très bon cadre de calcul parallèle, mais il est plus modèle orienté par lots, plutôt que pour l'exécution de SQL interactif. Par rapport à MapReduce, Impala a mis dans son ensemble requête arbre plan d'exécution , plutôt que d' une série de tâches MapReduce, après la mise en oeuvre du plan de distribution, Impala utilisation acquisition de données pull méthodes d' obtenir des résultats, les résultats de la collecte de données en passant l'exécution composition arbre en streaming , l'étape consistant à réduire les résultats intermédiaires écrites sur le disque, puis lire des données à partir de la tête de disque. Impala façon d'éviter d' utiliser les services dont vous avez besoin pour commencer chaque exécution de la requête en tête, par rapport Hive qui n'est pas l'heure de début de MapReduce.

1, Impala techniques d'optimisation utilisées

Exécutez le code généré en utilisant LLVM pour générer du code spécifique pour une requête particulière, réduire les frais généraux des appels de fonction tout en utilisant façon Inline pour accélérer l'efficacité de l'exécution. (C ++ caractéristiques)

La pleine utilisation de l'instruction de matériel disponible (SSE4.2).

Une meilleure planification IO, l'emplacement du disque où le bloc de données Impala savent mieux exploiter les avantages du multi-disques, alors que l'Impala prend en charge lecture de bloc de données direct et le code natif de contrôle de calcul.

La meilleure performance peut être obtenue en sélectionnant un format de stockage de données approprié (Impala prend en charge les formats de stockage multiples).

L'utilisation maximale de la mémoire, les résultats intermédiaires n'écrivent pas le disque, de façon une livraison rapide à diffuser sur le réseau.

2, le plan de mise en œuvre

Ruche : dépend de la miseœuvre du cadre MapReduce, le plan de miseœuvre est divisée en map-> Shuffle> reduce-> map->modèle. Si une requête est compilé dans plusieurs séries de MapReduce, alors il y aura plus d'écrirerésultats intermédiaires. Etant donné que les caractéristiques de la trame elle-même MapReduce effectué,processus intermédiaire excessif augmente le temps d'exécution global de la requête.

Impala : Le plan de miseœuvre de la performance d'un arbre complet du plan de miseœuvre peut être plus naturel de distribuer aux différents plan de miseœuvre de Impalad pour exécuter la requête, mais ne pas comme la Ruche comme combiné en un type de pipeline map-> réduire modèle, afin d'assurer Impala mieux et éviterconcurrence inutile sorte intermédiaire et mélanger.

3, le flux de données

Ruche :utilisantmanière poussée, chaque noeud de calculmanière proactive poussé aprèsachèvement des données de calcul au noeud ultérieur.

Impala : utilisezmode de traction, après le nœud de données vers l'avant getNext nœud actif, de cette façon les données peuvent être diffuséescontinu au client, et tant qu'il y est une donnée à traiter, peuvent apparaître immédiatement, sans attendre le traitement est terminé, plus en ligne avecrequêtes SQL interactives.

4, l' utilisation de mémoire

Ruche : lorsexécution si la mémoire ne correspond pastoutes les données, la mémoire externe sera utilisée pour assurer complèterequête peut être effectuéeséquentielle. fin MapReduce de chaque tour, les résultats intermédiaires sont également écrit dans HDFS, MapReduce est égalementraison des caractéristiques de l'architecture d'exécution,processus aléatoireil y aura une opération d'écriture surdisque local.

Impala : face ne correspondait pas à la mémoire de données,version 1.0.1 est le retourune erreur directe, sans l'utilisation demémoire externe,futures versions devraient être améliorées. Ce processus utilise actuellementla requête Impala étaient soumis à certaines restrictions, vous est mieux utilisé en conjonction avec la Ruche.

5, l' ordonnancement

Ruche : planification des tâches dépend de la politique de planification de Hadoop.

Impala : planification fait par vousmême, il n'y a qu'un simple programme de planificateur, il va essayer de rencontrer local, traiterdonnées numérisées données près de la machine physique où les donnéesmêmes. Le planificateur est encore relativement simple, on peutvoir dans SimpleScheduler :: GetBackend en, il n'y a pascharge deétude,état du réseau planification IO. Mais l'Impala aanalyse statistique de la performance du processus de miseœuvre, nous allons ensuite utiliser ces statistiques pour planifier.

6, à tolérance de pannes

Ruche : repose surtolérance aux pannes Hadoop.

Impala : Dans le processus de requête, aucune logique de défaut, si une défaillance se produit lorsexécution, une erreur est renvoyée directement (qui est lié à la conception de l'Impala, Impala parce quepositionnement dansrequêtes en temps réel,requête a échoué, puis vérifier une fois, puis vérifier une fois le coût est très faible).

7, applicabilité

Ruche : tâches de requête batch complexes,tâches de conversion de données.

Impala : analyse des données en temps réel, parce que le problème ne supporte pas l'UDF, peut gérerdomaine a certaines limites, en collaboration avec la Ruche, le résultat des ensembles de données Hive dansanalyse en temps réel.

Trois, Impala l' architecture

Impala principalement par Impalad , État magasin , Catalogd et CLI composition .

1, Impalad

Impalad : et exécuter DataNode sur le même noeud, représenté parprocessus Impalad, il reçoitrequêtes client ( réception de la demande de requête Impalad au coordonnateur , coordonnateur par l'JNI appel java expliquer SQL frontal requête, générer un arbre de plan de requête, puis par le planificateur le plan d'exécution distribué avec les données correspondantes d'autres Impalad exécution ),lire etdonnées d'écriture,requêtes exécutées en parallèle, et les résultats sont transférés parintermédiairel'arrière de réseau pour le flux de coordonnateur, renvoyé au client par le coordinateur. Pendanttemps Impalad également restercontact avec l'État magasin, utilisé pour déterminer qui Impalad estbonne santé et peut accepter le nouvel emploi.

Démarrez les trois ThriftServer dans Impalad: beeswax_server (client de connexion), hs2_server (métadonnées Hive emprunt), be_server (Impalad usage interne) et un service de ImpalaServer.

2, Etat Impala magasin

État magasin Impala :état de santé etinformationssuivi de localisation groupe Impalad, représenté parprocessus statestored, il est enregistré aux souscriptions de poignée et de maintenir une connexion de rythme cardiaque avec le Impalad Impalad en créant plusieurs threads, chaque Impalad sera mismémoire cache dans un état magasin les informations, lorsque l'État magasin horsligne (Impalad trouvé magasinétat est hors ligne, passemode de récupération,plusieurs reprises enregistré, lorsque l'État magasin rejoint le cluster, retournez automatiquement àdonnées normales, cache misejour)car Impalad ontétat cache magasin peut encore être travail, mais parce que certains Impalad échoue,données misescache ne peuvent pas être misjour,dans le plan d'exécution attribué à l'échec Impalad,échoue requête.

3, CLI

CLI: disponible à l'outil de lignecommande requête deutilisateur utilisé (Impala Shell réaliséutilisant python), tandis queImpala offre également Hue, JDBC, interface ODBC utilisation.

4, Catalogd (répertoire)

Catalogd : les métadonnées depasserelle d'accès, des métadonnées acquises d'autres catalogue externe Ruche Metastore, le catalogue en impala leur structure. Lorsqueexécution decommande impalad ddl au nom de son exécution par catalogd, la misejour pardiffusion statestored.

Quatre, Impala traitement des requêtes

 Impalad en frontal de Java C et le traitement back-end, d'accepter le client Impalad qui est connecté à analyser la requête de l'utilisateur l'arbre SQL plan d'exécution en tant que coordonnateur de requête, coordonnateur appelle l'extrémité avant Java via JNI.

arbre Java en plan d'exécution produit à l'extrémité des retours de format de données vers le C ++ Thrift extrémité arrière (coordonnateur) ( en plan d'exécution en une pluralité d'étapes, chaque étape est appelée PlanFragment chaque PlanFragment peut, lorsqu'il est exécuté par une pluralité de Impalad instance d'exécution parallèle ( certains PlanFragment que par un Impalad exemple d'exécution, cette opération de polymérisation) , l'ensemble du plan d'exécution d'un arbre de plan d'exécution ).

Coordinateur selon le plan d'exécution, les informations de stockage de données ( Impala par libhdfs avec HDFS Interact hdfsGetHosts par l' obtention de l'information de position du noeud sur lequel la méthode de fichier de bloc de données ), par un ordonnanceur (maintenant seulement-programmateur simple, en utilisant l'algorithme round-robin) :: coordonnateur Exec pour générer l'arborescence de plan d'exécution affectée à l'exécution d' actionnement arrière- plan approprié Impalad (requête en utilisant la génération de code LLVM, compiler, exécuter), obtenir des résultats en appelant la méthode GetNext ().

Si l'instruction d'insertion, le résultat sera calculé par libhdfs HDFS écriture différée lorsque toutes les données d'entrée est épuisée, la mise en œuvre de la fin, après l'annulation du service de requête.

Publié 81 articles originaux · a gagné les éloges 21 · vues 2238

Je suppose que tu aimes

Origine blog.csdn.net/qq_44065303/article/details/103456362
conseillé
Classement