web-dev-qa-db-fra.com

Pig vs Hive vs Native Map Réduire

J'ai une compréhension de base de ce que sont les abstractions Pig, Hive. Mais je n'ai pas d'idée claire sur les scénarios qui nécessitent une réduction de Hive, Pig ou native map.

J'ai parcouru quelques articles qui soulignent essentiellement que Hive est pour le traitement structuré et Pig est pour le traitement non structuré. Quand faut-il réduire la carte native? Pouvez-vous signaler quelques scénarios qui ne peuvent pas être résolus en utilisant Pig ou Hive mais dans la carte native réduire?

21
Maverick

La logique de branchement complexe qui a beaucoup de structures imbriquées si .. sinon .. est plus facile et plus rapide à implémenter dans MapReduce standard, pour le traitement de données structurées que vous pourriez utiliser Pangool , cela simplifie également des choses comme JOIN. MapReduce standard vous offre également un contrôle total pour minimiser le nombre de travaux MapReduce requis par votre flux de traitement de données, ce qui se traduit par des performances. Mais il faut plus de temps pour coder et introduire des changements.

Apache Pig est également bon pour les données structurées, mais son avantage est la possibilité de travailler avec des BAG de données (toutes les lignes qui sont regroupées sur une clé), il est plus simple d'implémenter des choses comme:

  1. Obtenez les meilleurs éléments N pour chaque groupe;
  2. Calculez le total pour chaque groupe et comparez ce total à chaque ligne du groupe;
  3. Utilisez des filtres Bloom pour les optimisations JOIN;
  4. Prise en charge multiquery (c'est lorsque PIG essaie de minimiser le nombre sur les travaux MapReduce en faisant plus de choses dans un seul travail)

Hive est mieux adapté aux requêtes ad hoc, mais son principal avantage est qu'il dispose d'un moteur qui stocke et partitionne les données. Mais ses tableaux peuvent être lus à partir de Pig ou de MapReduce standard.

Encore une chose, Hive et Pig ne sont pas bien adaptés pour travailler avec des données hiérarchiques.

19
alexeipab

Réponse courte - Nous avons besoin de MapReduce lorsque nous avons besoin d'un contrôle de niveau très profond et fin sur la façon dont nous voulons traiter nos données. Parfois, il n'est pas très pratique d'exprimer exactement ce dont nous avons besoin en termes de requêtes Pig et Hive.

Il ne devrait pas être totalement impossible de faire ce que vous pouvez utiliser MapReduce, via Pig ou Hive. Avec le niveau de flexibilité fourni par Pig and Hive, vous pouvez en quelque sorte réussir à atteindre votre objectif, mais ce n'est peut-être pas si fluide. Vous pouvez écrire des FDU ou faire quelque chose et y parvenir.

Il n'y a pas de distinction claire en tant que telle entre l'utilisation de ces outils. Cela dépend totalement de votre cas d'utilisation particulier. En fonction de vos données et du type de traitement dont vous avez besoin pour décider quel outil correspond le mieux à vos besoins.

Modifier:

Il y a quelque temps, j'avais un cas d'utilisation dans lequel je devais collecter des données sismiques et exécuter des analyses dessus. Le format des fichiers contenant ces données était quelque peu étrange. Une partie des données était EBCDIC encodée, tandis que le reste des données était au format binaire. Il s'agissait essentiellement d'un fichier binaire plat sans délimiteurs comme\n ou quelque chose. J'ai eu du mal à trouver un moyen de traiter ces fichiers en utilisant Pig ou Hive. En conséquence, j'ai dû m'installer avec MR. Au début, cela a pris du temps, mais progressivement, il est devenu plus fluide car MR est vraiment Swift une fois que vous avez le modèle de base prêt avec vous.

Donc, comme je l'ai dit plus tôt, cela dépend essentiellement de votre cas d'utilisation. Par exemple, itérer sur chaque enregistrement de votre jeu de données est vraiment facile dans Pig (juste un foreach), mais que faire si vous avez besoin foreach n ?? Ainsi, lorsque vous avez besoin de "ce" niveau de contrôle sur la façon dont vous devez traiter vos données, la MR est plus appropriée.

Une autre situation peut se présenter lorsque vos données sont hiérarchiques plutôt que basées sur des lignes ou si vos données sont hautement non structurées.

Les problèmes de métapatrons impliquant le chaînage et la fusion des travaux sont plus faciles à résoudre en utilisant MR directement plutôt qu'en utilisant Pig/Hive.

Et parfois, il est très très pratique d'accomplir une tâche particulière en utilisant un outil xyz par rapport à le faire en utilisant Pig/Hive. À mon humble avis, MR s'avère également mieux dans de telles situations. Par exemple, si vous devez effectuer des analyses statistiques sur votre BigData, R utilisé avec le streaming Hadoop est probablement la meilleure option.

HTH

14
Tariq

Mapreduce:

Strengths:
      works both on structured and unstructured data.
      good for writing complex business logic.

Weakness:
     long development type
     hard to achieve join functionality

Ruche:

Strengths:
     less development time.
     suitable for adhoc analysis.
     easy for joins

Weakness :
     not easy for complex business logic.
     deals only structured data.

Cochon

Strengths :
      Structured and unstructured data.
      joins are easily written.

Weakness:
     new language to learn.
     converted into mapreduce.
10
Balaswamy Vaddeman

Ruche

Avantages:

Sql comme les gars de la base de données adorent ça. Bon support pour les données structurées. Prend actuellement en charge le schéma de base de données et les vues comme la structure. Prend en charge plusieurs utilisateurs simultanés, des scénarios multi-sessions. Un soutien communautaire plus important. Hive, Hiver server, Hiver Server2, Impala, Centry déjà

Inconvénients: les performances se dégradent à mesure que les données grossissent, pas grand-chose à faire, des problèmes de mémoire sur le flux. ne peux pas faire grand chose avec. Les données hiérarchiques représentent un défi. Les données non structurées nécessitent un composant de type udf La combinaison de plusieurs techniques pourrait être un cauchemar pour les portions dynamiques avec UTDF en cas de big data, etc.

Pig: Avantages: Excellent langage de flux de données basé sur des scripts.

Les inconvénients:

Les données non structurées nécessitent un composant de type udf Pas un grand support communautaire

MapReudce: Avantages: Je ne suis pas d'accord avec "la fonctionnalité de jointure difficile à réaliser", si vous comprenez quel type de jointure vous souhaitez implémenter, vous pouvez l'implémenter avec quelques lignes de code. La plupart du temps, MR donne de meilleures performances. La prise en charge MR des données hiérarchiques est excellente, en particulier pour implémenter des structures arborescentes. Meilleur contrôle du partitionnement/indexation des données. Chaînage des tâches.

Inconvénients: besoin de bien connaître l'API pour obtenir de meilleures performances, etc. Code/débogage/maintenance

5
kumar MI

Scénarios où Hadoop Map Reduce est préféré à Hive ou PIG

  1. Lorsque vous avez besoin d'un contrôle précis du programme du pilote

  2. Chaque fois que le travail nécessite l'implémentation d'un partitionneur personnalisé

  3. S'il existe déjà une bibliothèque prédéfinie de Java Mappeurs ou Réducteurs pour un travail

  4. Si vous avez besoin d'une bonne testabilité lors de la combinaison de nombreux ensembles de données volumineux
  5. Si l'application exige des exigences de code héritées qui commandent la structure physique
  6. Si le travail nécessite une optimisation à un stade particulier du traitement en utilisant au mieux les astuces comme la combinaison dans le mappeur
  7. Si le travail a une utilisation délicate du cache distribué (jointure répliquée), des produits croisés, des regroupements ou des jointures

Comparison between Map reduce/ Pig/ Hive

Avantages de Pig/Hive:

  1. Hadoop MapReduce nécessite plus d'efforts de développement que Pig and Hive.
  2. Les approches de codage Pig et Hive sont plus lentes qu'un programme MapReduce Hadoop entièrement réglé.
  3. Lors de l'utilisation de Pig et Hive pour exécuter des tâches, les développeurs Hadoop n'ont pas à se soucier de la non-concordance de version.
  4. Il y a une possibilité très limitée pour le développeur d'écrire des bogues de niveau Java lors du codage dans Pig ou Hive.

Jetez un oeil à ce post pour Pig Vs Hive comparaison.

2
Ravindra babu

Ici est la grande comparaison. Il spécifie tous les scénarios de cas d'utilisation.

1
KayV

Toutes les choses que nous pouvons faire en utilisant PIG et Hive peuvent être réalisées en utilisant MR (parfois cela prendra du temps cependant). PIG and Hive utilise MR/SPARK/TEZ en dessous. Donc, toutes les choses que MR peut faire peuvent ou non être possibles dans Hive et PIG.

1
NewToJava