Различия между PIG и MapReduce

Pig - это язык сценариев, используемый для изучения больших наборов данных. Pig Latin - это расширение Hadoop, которое упрощает программирование Hadoop, предоставляя язык обработки данных высокого уровня. Поскольку Pig создает сценарии, мы можем достичь функциональности, написав очень мало строк кода. MapReduce - это решение для масштабирования обработки данных. MapReduce - это не программа, это фреймворк для написания программ распределенной обработки данных. Программы, написанные с использованием инфраструктуры MapReduce, успешно масштабируются на тысячах машин.

Введение в PIG

Свинья - это поток данных и язык высокого уровня. Свинья работает с любой из версий в Hadoop.

Компоненты Свиньи

  • Pig Latin - язык, используемый для выражения потоков данных
  • Pig Engine - двигатель над Hadoop

Преимущества свиньи

  • Устраняет необходимость пользователей настраивать Hadoop
  • Изолирует пользователей от изменений в интерфейсах Hadoop.
  • Увеличение производительности.
  1. В одном тесте 10 строк Pig Latin - 200 строк Java
  2. На то, чтобы написать на Java 4 часа, на Pig Latin потребуется около 15 минут.
  3. Открытая система для не Java-программистов

Если нам известно о HIVE и PIG, нет необходимости заботиться о коде, если версия Hadoop обновлена ​​до более поздней версии.

Например: если версия Hadoop 2.6, теперь она обновлена ​​до 2.7. PIG поддерживает в любых версиях, не нужно беспокоиться о том, работает код или нет в более высоких версиях.

Особенности PIG

Pig Latin - язык потоков данных

  • Обеспечивает поддержку типов данных - long, float, char, схем и функций.
  • Расширяем и поддерживает пользовательские функции
  • Метаданные не обязательны, но используются при наличии
  • Работает с файлами в HDFS
  • Обеспечивает общие операции, такие как JOIN, GROUP, FILTER, SORT

Сценарий использования свиньи

  • Обработка блога
  • Обработка данных для веб-поисковых платформ
  • Специальные запросы к большим наборам данных
  • Быстрое прототипирование алгоритмов для обработки больших массивов данных

Кто использует свинью

  • Yahoo, один из самых тяжелых пользователей Hadoop, выполняет 40% всех своих заданий Hadoop в виде свиньи.
  • Twitter также еще один известный пользователь Pig

Введение в MapReduce

  • В прошлом обработка все более крупных наборов данных была проблемой. Все ваши данные и вычисления должны были поместиться на одной машине. Чтобы работать с большим количеством данных, вам нужно было купить более крупную и более дорогую машину.
  • Итак, каково решение для обработки большого объема данных, когда технически или финансово более невозможно сделать это на одной машине?
  • MapReduce - это решение для масштабирования обработки данных.

MapReduce имеет 3 этапа / фазы

Шаги ниже выполняются в последовательности.

  • Фаза картографирования

Ввод из файловой системы HDFS.

  • Перемешать и сортировать

Ввод в случайном порядке и сортировки является выходом маппера

  • редуктор

Вход в редуктор выводится для перемешивания и сортировки.

MapReduce будет понимать данные с точки зрения только комбинации ключ-значение.

  • Основная цель фазы карты - прочитать все входные данные и преобразовать или отфильтровать их. Преобразованные или отфильтрованные данные дополнительно анализируются бизнес-логикой в ​​фазе сокращения, хотя фаза сокращения строго не требуется.
  • Основная цель этапа сокращения - использовать бизнес-логику для ответа на вопрос и решения проблемы.

Сравнение лицом к лицу между PIG и MapReduce (Инфографика)

Ниже приведены 4 лучших сравнения между PIG и MapReduce.

Ключевые различия между PIG и MapReduce

Ниже приведены наиболее важные различия между PIG и MapReduce.

Свинья или MapReduce Быстрее

Любые задания PIG переписываются в MapReduce.so, Map Reduce только быстрее.

Вещи, которые не могут быть в PIG

Когда что-то трудно выразить в Pig, у вас получится представление, то есть создание чего-то из нескольких примитивов.

Несколько примеров:

  • Сложные группировки или объединения
  • Объединение множества наборов данных
  • Комплексное использование распределенного кэша (реплицированное соединение)
  • Комплексные перекрестные продукты
  • Делать сумасшедшие вещи во вложенном FOREACH

В этих случаях Pig собирается замедлить кучу заданий MapReduce, что можно было бы сделать с меньшими затратами.

Использование сценариев MapReduce

  • Когда есть хитрые вещи для достижения, используйте MapReduce.

Разработка намного быстрее в PIG?

  • Меньшее количество строк кода, т.е. меньший размер кода, экономит время разработчика.
  • Меньше багов на уровне Java, но их сложнее обнаружить.

В дополнение к вышеуказанным различиям поддерживает PIG

  • Это позволяет разработчикам хранить данные в любом месте конвейера.
  • Объявляет планы выполнения.
  • Он предоставляет операторам возможность выполнять функции ETL (извлечение, преобразование и загрузка).

Сравнение лицом к лицу между PIG и MapReduce

Ниже приведены списки точек, описывающих сравнения между PIG и MapReduce.

Основа для сравнения

PIG

Уменьшение карты

операции
  • Язык потока данных.
  • Язык высокого уровня.
  • Выполнение операций соединения на свинье просты
  • Язык обработки данных.
  • Язык низкого уровня
  • Довольно сложно выполнить операции объединения.
Линии кода и многословияМногозадачный подход, тем самым сокращая длину кодов.для выполнения одной и той же задачи потребуется почти в 10 раз больше строк.
компиляцияНет необходимости в компиляции. При выполнении каждый оператор Apache Pig внутренне преобразуется в задание MapReduce.Задания MapReduce имеют длительный процесс компиляции.
Переносимость кодаРаботает с любой из версий в HadoopНет гарантии, что поддерживается с каждой версией в Hadoop

Вывод - Свинья против MapReduce

Пример: нам нужно посчитать повторение слов, присутствующих в предложении.

Какой лучший способ сделать программу?

Свинья или MapReduce

Написание программы на свинье

input_lines = LOAD '/tmp/word.txt' AS (строка: chararray);

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

filter_words = ФИЛЬТР слова по слову МАТЧИ '\\ w +';

word_groups = GROUP Filter_words BY word;

word_count = FOREACH word_groups GENERATE COUNT (Filter_words) Количество AS, группа AS слово;

order_word_count = ORDER word_count BY count DESC;

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

Написание программы в 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;

открытый класс WordCount (

public static void main (String () args) создает исключение (

if (args.length! = 2) (

System.out.printf (

«Использование: WordCount \ n»);

System.exit (-1);

)

@SuppressWarnings ( «устаревание»)

Job job = новая работа ();

job.setJarByClass (WordCount.class);

job.setJobName («Количество слов»);

FileInputFormat.setInputPaths (job, new Path (args (0)));

FileOutputFormat.setOutputPath (job, new Path (args (1)));

job.setMapperClass (WordMapper.class);

job.setReducerClass (SumReducer.class);

job.setOutputKeyClass (Text.class);

job.setOutputValueClass (IntWritable.class);

логический успех = job.waitForCompletion (true);

System.exit (успех? 0: 1);

)

)

Если функциональность может быть достигнута с помощью PIG, то какова функциональность записи в MapReduce (длинные коды).

Всегда используйте правильный инструмент для работы, получить работу быстрее и лучше.

Рекомендуемая статья

Это было полезное руководство по PIG против MapReduce, здесь мы обсудили их значение, сравнение «голова к голове», ключевые различия и выводы. Вы также можете посмотреть следующие статьи, чтобы узнать больше -

  1. Свинья против искры - 10 полезных отличий
  2. Apache Pig против Apache Hive - Лучшие 12 полезных отличий
  3. Лучшие 15 вещей, которые нужно знать о MapReduce vs Spark
  4. Как работает MapReduce?
  5. Распределенный кеш в Hadoop