Различия между PIG и MapReduce
Pig - это язык сценариев, используемый для изучения больших наборов данных. Pig Latin - это расширение Hadoop, которое упрощает программирование Hadoop, предоставляя язык обработки данных высокого уровня. Поскольку Pig создает сценарии, мы можем достичь функциональности, написав очень мало строк кода. MapReduce - это решение для масштабирования обработки данных. MapReduce - это не программа, это фреймворк для написания программ распределенной обработки данных. Программы, написанные с использованием инфраструктуры MapReduce, успешно масштабируются на тысячах машин.
Введение в PIG
Свинья - это поток данных и язык высокого уровня. Свинья работает с любой из версий в Hadoop.
Компоненты Свиньи
- Pig Latin - язык, используемый для выражения потоков данных
- Pig Engine - двигатель над Hadoop
Преимущества свиньи
- Устраняет необходимость пользователей настраивать Hadoop
- Изолирует пользователей от изменений в интерфейсах Hadoop.
- Увеличение производительности.
- В одном тесте 10 строк Pig Latin - 200 строк Java
- На то, чтобы написать на Java 4 часа, на Pig Latin потребуется около 15 минут.
- Открытая система для не 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, здесь мы обсудили их значение, сравнение «голова к голове», ключевые различия и выводы. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Свинья против искры - 10 полезных отличий
- Apache Pig против Apache Hive - Лучшие 12 полезных отличий
- Лучшие 15 вещей, которые нужно знать о MapReduce vs Spark
- Как работает MapReduce?
- Распределенный кеш в Hadoop