Différences entre PIG et MapReduce

Pig est un langage de script utilisé pour explorer de grands ensembles de données. Pig Latin est une extension Hadoop qui simplifie la programmation Hadoop en offrant un langage de traitement de données de haut niveau. Comme Pig écrit des scripts, nous pouvons atteindre la fonctionnalité en écrivant très peu de lignes de code. MapReduce est une solution pour faire évoluer le traitement des données. MapReduce n'est pas un programme, c'est un cadre pour écrire des programmes de traitement de données distribués. Les programmes écrits à l'aide du framework MapReduce ont évolué avec succès sur des milliers de machines.

Introduction au PIG

Pig est un langage de flux de données et de haut niveau. Pig fonctionne avec toutes les versions de Hadoop.

Composants de porc

  • Pig Latin - une langue utilisée pour exprimer les flux de données
  • Pig Engine - un moteur au-dessus de Hadoop

Avantages de PIG

  • Supprime la nécessité pour les utilisateurs de régler Hadoop
  • Isole les utilisateurs des modifications des interfaces Hadoop.
  • Augmente la productivité.
  1. Dans un test, 10 lignes de Pig Latin ≈ 200 lignes de Java
  2. Ce qui prend 4 heures pour écrire en Java prend environ 15 minutes en Pig Latin
  3. Système ouvert aux programmeurs non Java

Si nous connaissons HIVE et PIG, il n'est pas nécessaire de se soucier du code, si la version Hadoop est mise à niveau vers une version supérieure.

Par exemple: si la version Hadoop est 2.6 maintenant, elle est mise à niveau vers 2.7. PIG prend en charge dans toutes les versions, pas besoin de s'inquiéter si le code fonctionne ou non dans les versions supérieures.

Caractéristiques de PIG

Pig Latin est une langue de flux de données

  • Prend en charge les types de données - long, float, char array, schémas et fonctions
  • Est extensible et prend en charge les fonctions définies par l'utilisateur
  • Métadonnées non requises, mais utilisées lorsqu'elles sont disponibles
  • Fonctionne sur les fichiers en HDFS
  • Fournit des opérations courantes comme JOIN, GROUP, FILTER, SORT

Scénario d'utilisation PIG

  • Traitement de blog
  • Traitement des données pour les plateformes de recherche Web
  • Requêtes ad hoc sur de grands ensembles de données
  • Prototypage rapide d'algorithmes pour le traitement de grands ensembles de données

Qui utilise Pig

  • Yahoo, l'un des plus gros utilisateurs de Hadoop, exécute 40% de tous ses emplois Hadoop chez un porc.
  • Twitter est également un autre utilisateur bien connu de Pig

Introduction à MapReduce

  • Par le passé, le traitement d'ensembles de données de plus en plus volumineux était un problème. Toutes vos données et calculs devaient tenir sur une seule machine. Pour travailler sur plus de données, vous deviez acheter une machine plus grande et plus chère.
  • Alors, quelle est la solution pour traiter un grand volume de données lorsqu'il n'est plus techniquement ou financièrement possible de le faire sur une seule machine?
  • MapReduce est une solution pour faire évoluer le traitement des données.

MapReduce a 3 étapes / phases

Les étapes ci-dessous sont exécutées en séquence.

  • Phase de mappage

Entrée à partir du système de fichiers HDFS.

  • Mélanger et trier

L'entrée pour mélanger et trier est une sortie du mappeur

  • Réducteur

L'entrée vers le réducteur est sortie pour mélanger et trier.

MapReduce comprendra les données en termes de combinaison clé-valeur uniquement.

  • Le but principal de la phase de cartographie est de lire toutes les données d'entrée et de les transformer ou les filtrer. Les données transformées ou filtrées sont ensuite analysées par la logique métier dans la phase de réduction, bien qu'une phase de réduction ne soit pas strictement requise.
  • L'objectif principal de la phase de réduction est d'utiliser la logique métier pour répondre à une question et résoudre un problème.

Comparaison directe entre PIG et MapReduce (infographie)

Ci-dessous, les 4 meilleures comparaisons entre PIG et MapReduce

Différences clés entre PIG et MapReduce

Voici les différences les plus importantes entre PIG et MapReduce

PIG ou MapReduce plus rapide

Tous les travaux PIG sont réécrits dans MapReduce.so, Map Reduce n'est que plus rapide.

Choses qui ne peuvent pas être dans PIG

Quand quelque chose est difficile à exprimer dans Pig, vous allez vous retrouver avec une performance, c'est-à-dire construire quelque chose de plusieurs primitives

Quelques exemples:

  • Regroupements ou jointures complexes
  • Combiner de nombreux ensembles de données
  • Utilisation complexe du cache distribué (jointure répliquée)
  • Produits croisés complexes
  • Faire des trucs fous dans FOREACH imbriqué

Dans ces cas, Pig va ralentir un tas de travaux MapReduce, ce qui aurait pu être fait avec moins.

Utilisation des scénarios MapReduce

  • Lorsqu'il y a des choses délicates à réaliser, utilisez MapReduce.

Le développement est beaucoup plus rapide en PIG?

  • Moins de lignes de code, c.-à-d. Que le code est plus petit, cela fait gagner du temps au développeur.
  • Moins de bogues de niveau java à résoudre, mais ces bogues sont plus difficiles à trouver.

En plus des différences ci-dessus, PIG prend en charge

  • Il permet aux développeurs de stocker des données n'importe où dans le pipeline.
  • Déclare des plans d'exécution.
  • Il permet aux opérateurs d'effectuer des fonctions ETL (Extraction, Transformation et Chargement).

Comparaison directe entre PIG et MapReduce

Voici les listes de points, décrivez les comparaisons entre PIG vs MapReduce

Base de comparaison

PORC

MapReduce

Les opérations
  • Langue du flux de données.
  • Langage de haut niveau.
  • Les opérations de jointure dans un cochon sont simples
  • Langage de traitement des données.
  • Langage de bas niveau
  • Assez difficile d'effectuer les opérations de jointure.
Lignes de code et verbositéApproche multi-requêtes, réduisant ainsi la longueur des codes.nécessitent presque 10 fois plus de lignes pour effectuer la même tâche.
CompilationPas besoin de compilation. Lors de l'exécution, chaque opérateur Apache Pig est converti en interne en un travail MapReduce.Les travaux MapReduce ont un long processus de compilation.
Portabilité du codeFonctionne avec toutes les versions de HadoopAucune garantie qui prend en charge avec chaque version de Hadoop

Conclusion - PIG vs MapReduce

Exemple: nous devons compter la réapparition des mots présents dans la phrase.

Quelle est la meilleure façon de faire le programme?

PIG ou MapReduce

Écrire le programme en cochon

input_lines = LOAD '/tmp/word.txt' AS (ligne: chararray);

words = FOREACH input_lines GENERATE FLATTEN (TOKENIZE (line)) AS word;

mots_filtrés = FILTRE les mots PAR MATCHES de mots '\\ w +';

word_groups = GROUPE mots_filtrés PAR mot;

word_count = FOREACH word_groups GÉNÉRER LE COMPTE (mots_filtrés) AS count, group AS word;

order_word_count = ORDER word_count BY count DESC;

STORE order_word_count INTO '/tmp/results.txt';

Écriture du programme dans MapReduce.

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.mapreduce.Job;

classe publique WordCount (

public static void main (String () args) lève l'exception (

if (args.length! = 2) (

System.out.printf (

"Utilisation: WordCount \ n");

System.exit (-1);

)

@SuppressWarnings («dépréciation»)

Job job = nouveau Job ();

job.setJarByClass (WordCount.class);

job.setJobName ("Word Count");

FileInputFormat.setInputPaths (travail, nouveau chemin (args (0)));

FileOutputFormat.setOutputPath (travail, nouveau chemin (args (1)));

job.setMapperClass (WordMapper.class);

job.setReducerClass (SumReducer.class);

job.setOutputKeyClass (Text.class);

job.setOutputValueClass (IntWritable.class);

succès booléen = job.waitForCompletion (true);

System.exit (succès? 0: 1);

)

)

Si la fonctionnalité peut être obtenue par PIG, à quoi sert la fonctionnalité d'écriture dans MapReduce (codes longs).

Utilisez toujours le bon outil pour le travail, obtenez le travail plus rapidement et mieux.

Article recommandé

Cela a été un guide utile pour PIG vs MapReduce ici, nous avons discuté de leur signification, des comparaisons tête à tête, des différences clés et des conclusions. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Pig vs Spark - 10 différences utiles à apprendre
  2. Apache Pig vs Apache Hive - 12 principales différences utiles
  3. Les 15 meilleures choses que vous devez savoir sur MapReduce vs Spark
  4. Comment fonctionne MapReduce?
  5. Cache distribué dans Hadoop

Catégorie: