hadoop - spark - Cochon vs Hive vs Carte native Réduire




spark vs hadoop (5)

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

J'ai parcouru quelques articles qui soulignent que Hive est destiné au traitement structuré et que Pig est destiné au traitement non structuré. Quand avons-nous besoin de réduire la carte native? Pouvez-vous indiquer quelques scénarios qui ne peuvent pas être résolus en utilisant Pig ou Hive mais dans la carte native, réduisez?


Réponse courte - Nous avons besoin de MapReduce lorsque nous avons besoin d'un contrôle très approfondi et précis sur la manière dont nous souhaitons traiter nos données. Parfois, il n'est pas très pratique d'exprimer ce dont nous avons besoin exactement en termes de requêtes Pig et Hive.

Il ne devrait pas être totalement impossible de faire ce que vous pouvez avec 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 facile. 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 ces outils. Cela dépend totalement de votre cas d'utilisation particulier. Sur la base de vos données et du type de traitement, vous devez décider quel outil correspond le mieux à vos besoins.

Modifier :

Il y a quelque temps, j'ai eu 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 bizarre. Une partie des données était encodée en EBCDIC , alors que le reste des données était en format binaire. C'était fondamentalement 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û régler avec MR. Au début, il a fallu du temps, mais peu à peu, cela est devenu plus facile car MR est vraiment rapide une fois que le modèle de base est 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 de n ?? Donc, lorsque vous avez besoin de "ce" niveau de contrôle sur la manière 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 fortement non structurées.

Le problème de Metapatterns, lié au chaînage des tâches et à la fusion des tâches, est plus facile à résoudre en utilisant directement MR plutôt que d'utiliser Pig / Hive.

Et parfois, il est très pratique d'accomplir une tâche particulière en utilisant un outil xyz plutôt que de le faire en utilisant Pig / Hive. À mon humble avis, MR s'avère également être meilleur 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


Ruche

Avantages:

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

Inconvénients: les performances se dégradent au fur et à mesure que les données deviennent plus volumineuses, pas de problèmes de mémoire. ne peux pas faire grand chose avec ça. Les données hiérarchiques constituent un défi. Des données non structurées requièrent un composant de type UDF La combinaison de plusieurs techniques peut constituer un cauchemar avec des parties dynamiques avec UTDF en cas de données volumineuses, etc.

Cochon: Avantages: Grand langage de flux de données basé sur un script.

Les inconvénients:

Les données non structurées nécessitent un composant de type udf

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

Inconvénients: besoin de connaître très bien l'api pour obtenir de meilleures performances, etc. Code / debug / maintenance


Une logique de branchement complexe qui comporte beaucoup de structures imbriquées si .. plus facile et plus rapide à implémenter dans Standard MapReduce, pour le traitement de données structurées, vous pouvez utiliser Pangool , cela simplifie également des choses comme JOIN. De plus, Standard MapReduce vous offre 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 modifications.

Apache Pig est également utile pour les données structurées, mais son avantage est la possibilité de travailler avec des BAG de données (toutes les lignes regroupées sur une clé), il est plus simple de mettre en œuvre des éléments tels que:

  1. Obtenez les N meilleurs éléments pour chaque groupe;
  2. Calculer le total pour chaque groupe et le comparer à chaque rangée du groupe;
  3. Utilisez les filtres Bloom pour les optimisations JOIN;
  4. Prise en charge de Multiquery (c'est quand PIG tente de minimiser le nombre sur les Jobs MapReduce en faisant plus de choses dans un seul Job)

Hive convient mieux aux requêtes ad hoc, mais son principal avantage est d'avoir un moteur qui stocke et partitionne les données. Mais ses tables peuvent être lues à 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.


Here la grande comparaison. Il spécifie tous les scénarios d'utilisation.


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.

Porc

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

Weakness:
     new language to learn.
     converted into mapreduce.






apache-pig