Разлики между PIG срещу MapReduce
Pig е скриптов език, използван за изследване на големи масиви данни. Pig Latin е разширение на Hadoop, което опростява програмирането на Hadoop, като дава език за обработка на данни на високо ниво. Тъй като Pig е сценарист, ние можем да постигнем функционалността, като напишем много малко редове код. MapReduce е решение за мащабиране на обработката на данни. MapReduce не е програма, а рамка за писане на разпределени програми за обработка на данни. Програмите, написани с помощта на структурата MapReduce, успешно са мащабирани на хиляди машини.
Въведение в PIG
Pig е поток от данни и език на високо ниво. Прасето работи с която и да е от версиите в Hadoop.
Компоненти на прасето
- Pig Latin - език, използван за изразяване на потоци от данни
- Pig Engine - двигател отгоре на Hadoop
Предимства на PIG
- Премахва необходимостта потребителите да настройват Hadoop
- Изолира потребителите от промени в интерфейсите на Hadoop.
- Увеличаване на производителността.
- В един тест 10 реда от Pig Latin - 200 реда на Java
- Това, което отнема 4 часа за писане на Java, отнема около 15 минути на прасен латински език
- Отворена система за програмисти, които не са Java
Ако сме наясно с HIVE и PIG, няма нужда да се грижим за кода, ако Hadoop версията е надстроена до по-висока версия.
Например: ако версията на Hadoop е 2.6, сега тя е надградена до 2.7. PIG поддържа във всяка версия, няма нужда да се притеснявате дали кодът работи или не във висшите версии.
Характеристики на PIG
Прасето латински е език за поток на данни
- Осигурява поддръжка за типове данни - long, float, char matray, схеми и функции
- Разширява се и поддържа дефинирани от потребителя функции
- Метаданните не се изискват, но се използват, когато са налични
- Работи с файлове в HDFS
- Осигурява общи операции като ПРИЛОЖЕТЕ, ГРУПА, ФИЛТЪР, СОРТ
Сценарий за използване на PIG
- Обработка на уеб лог
- Обработка на данни за уеб платформи за търсене
- Специални заявки в големи масиви от данни
- Бързо прототипиране на алгоритми за обработка на големи масиви данни
Кой използва Pig
- Yahoo, един от най-тежките потребители на Hadoop, управлява 40% от всичките си Hadoop задачи при прасе.
- Twitter също е друг известен потребител на Pig
Въведение в MapReduce
- В миналото обработката на все по-големи набори от данни беше проблем. Всички ваши данни и изчисления трябваше да се поберат на една машина. За да работите върху повече данни, трябваше да купите по-голяма, по-скъпа машина.
- И така, какво е решението за обработката на голям обем от данни, когато това вече не е технически или финансово възможно да се направи на една машина?
- MapReduce е решение за мащабиране на обработката на данни.
MapReduce има 3 етапа / фази
Стъпките по-долу се изпълняват последователно.
- Фаза на картографиране
Вход от файловата система HDFS.
- Разбъркайте и подредете
Въвеждането на разбъркване и сортиране е изход на картограф
- редуктор
Входът към редуктора се извежда за разбъркване и сортиране.
MapReduce ще разбере данните по отношение на само комбинация Key-value.
- Основната цел на фазата на картата е да прочете всички входни данни и да ги трансформира или филтрира. Преобразуваните или филтрирани данни се анализират по-нататък по бизнес логика във фазата на намаляване, въпреки че фазата на намаляване не е строго необходима.
- Основната цел на редуциращата фаза е да се използва бизнес логика за отговор на въпрос и решаване на проблем.
Сравнение между главата на PIG и MapReduce (Инфографика)
По-долу са най-добрите 4 сравнения между PIG и MapReduce
Ключови разлики между PIG срещу MapReduce
По-долу са най-важните разлики между PIG срещу MapReduce
PIG или MapReduce По-бързо
Всички задания за PIG се пренаписват в MapReduce.so, намаляването на картата е само по-бързо.
Неща, които не могат да бъдат в PIG
Когато нещо е трудно да се изрази в Pig, вие ще приключите с изпълнение, т.е. изграждане на нещо от няколко примитива
Няколко примера:
- Сложни групи или присъединявания
- Комбиниране на много набори от данни
- Сложно използване на разпределения кеш (репликирано присъединяване)
- Сложни кръстосани продукти
- Правете луди неща в вложен ГОРЕЧ
В тези случаи Pig ще забави куп работни места на MapReduce, което би могло да стане с по-малко.
Използване на сценарии MapReduce
- Когато има сложни неща за постигане, използвайте MapReduce.
Развитието е много по-бързо в PIG?
- По-малко редове код, т.е. по-малкият код, спестяват времето на разработчика.
- По-малко грешки на ниво Java, за да се справят, но тези грешки са по-трудни за откриване.
В допълнение към горните разлики поддържа PIG
- Тя позволява на разработчиците да съхраняват данни навсякъде в тръбопровода.
- Декларира планове за изпълнение.
- Той предоставя на операторите да изпълняват ETL (Extract, Transform и Load) функции.
Сравнение между главата на PIG и MapReduce
По-долу са списъците с точки, опишете сравненията между PIG и MapReduce
Основа за сравнение |
PIG |
MapReduce |
Операции |
|
|
Линии на код и многословие | Подход с много въпроси, като по този начин се намалява дължината на кодовете. | изискват почти 10 пъти повече брой линии за изпълнение на една и съща задача. |
компилация | Няма нужда от компилация. При изпълнение всеки оператор Apache Pig се преобразува вътрешно в задача на MapReduce. | Заданията MapReduce имат дълъг процес на компилиране. |
Преносимост на кода | Работи с някоя от версиите в Hadoop | Без гаранция, която поддържа всяка версия на Hadoop |
Заключение - PIG срещу MapReduce
Пример: трябва да преброим повторението на думите, присъстващи в изречението.
Какъв е по-добрият начин да направите програмата?
PIG или MapReduce
Писане на програмата на прасе
input_lines = LOAD '/tmp/word.txt' AS (ред: chararray);
думи = FOREACH input_lines GENERATE FLATTEN (TOKENIZE (line)) AS word;
filtered_words = ФИЛТЪР думи по дума MATCHES '\\ w +';
word_groups = GROUP филтрирани_words BY word;
word_count = FOREACH word_groups GENERATE COUNT (filtered_words) AS count, group AS word;
order_word_count = ORDER word_count BY count DESC;
STORE нареден_word_count INTO '/tmp/results.txt';
Писане на програмата в MapReduce.
импортиране на org.apache.hadoop.fs.Path;
импортиране на org.apache.hadoop.io.IntWritable;
импортиране на org.apache.hadoop.io.Text;
импортиране на org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
импортиране на org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
импортиране на org.apache.hadoop.mapreduce.Job;
публична класа WordCount (
public static void main (String () args) хвърля изключение (
ако (args.length! = 2) (
System.out.printf (
„Използване: WordCount \ n“);
System.exit (-1);
)
@SuppressWarnings ( "неодобрение")
Работа = нова работа ();
job.setJarByClass (WordCount.class);
job.setJobName („Брой на думите“);
FileInputFormat.setInputPaths (работа, нов Path (args (0)));
FileOutputFormat.setOutputPath (работа, нов Path (args (1)));
job.setMapperClass (WordMapper.class);
job.setReducerClass (SumReducer.class);
job.setOutputKeyClass (Text.class);
job.setOutputValueClass (IntWritable.class);
булев успех = job.waitForCompletion (вярно);
System.exit (успех? 0: 1);
)
)
Ако функционалността може да бъде постигната от PIG, какво е ползването на функционалността за писане в MapReduce (Дълги кодове).
Винаги използвайте правилния инструмент за работата, по-бързо и по-добре.
Препоръчителен член
Това беше полезно ръководство за PIG срещу MapReduce, тук обсъдихме тяхното значение, сравненията на главата, ключовите разлики и заключенията. Можете също да разгледате следните статии, за да научите повече -
- Pig vs Spark - 10 полезни разлики за научаване
- Apache Pig vs Apache Hive - Топ 12 полезни разлики
- Най-добрите 15 неща, които трябва да знаете за MapReduce срещу Spark
- Как работи MapReduce?
- Разпределен кеш в Hadoop