Відмінності між PIG та MapReduce
Pig - це сценарна мова, яка використовується для дослідження великих наборів даних. Pig Latin - це розширення Hadoop, яке спрощує програмування Hadoop, надаючи мову обробки даних високого рівня. Оскільки Свиня пише сценарій, ми можемо досягти функціональності, написавши дуже мало рядків коду. MapReduce - це рішення для масштабування обробки даних. MapReduce - це не програма, це рамка для написання розподілених програм обробки даних. Програми, написані за допомогою програми MapReduce, успішно розширюються на тисячах машин.
Вступ до PIG
Pig - це потік даних та мова високого рівня. Свиня працює з будь-якою з версій Hadoop.
Компоненти свині
- Свиня латинська - мова, що використовується для вираження потоків даних
- Pig Engine - двигун на вершині Hadoop
Переваги PIG
- Усуває потребу користувачів у налаштуванні Hadoop
- Ізолює користувачів від змін в інтерфейсах Hadoop.
- Підвищення продуктивності праці.
- В одному тесті 10 рядків латинської свині - 200 ліній Java
- На написання на Java потрібно 4 години, а на латинській свині - близько 15 хвилин
- Відкрита система для програмістів, які не є Java
Якщо нам відомо HIVE та PIG, про код не потрібно дбати, чи буде оновлена версія Hadoop до вищої версії.
Наприклад: якщо версія Hadoop дорівнює 2.6, то вона буде оновлена до 2.7. Підтримка PIG у будь-яких версіях не потрібно турбуватися, чи працює код у вищих версіях чи ні.
Особливості PIG
Латинська свиня - мова потоку даних
- Забезпечує підтримку типів даних - long, float, масив char, схеми та функції
- Є розширюваним і підтримує визначені користувачем функції
- Метадані не потрібні, але використовуються, коли вони доступні
- Працює над файлами в HDFS
- Надає загальні операції, такі як ПРИЄДНАЙТЕСЬ, ГРУПА, ФІЛЬТР, СОРТ
Сценарій використання PIG
- Обробка веб-журналів
- Обробка даних для веб-пошукових платформ
- Спеціальні запити для великих наборів даних
- Швидке прототипування алгоритмів для обробки великих наборів даних
Хто використовує Свиню
- Yahoo, один з найважчих користувачів Hadoop, виконує 40% усіх своїх робіт Hadoop у свині.
- Twitter - ще один відомий користувач Pig
Вступ до MapReduce
- Раніше проблемою була обробка все більших наборів даних. Усі ваші дані та обчислення повинні були розміщуватися на одній машині. Щоб опрацювати більше даних, вам довелося придбати більшу, дорожчу машину.
- Отже, що таке рішення для обробки великого обсягу даних, коли це неможливо зробити технічно чи фінансово на одній машині?
- MapReduce - це рішення для масштабування обробки даних.
MapReduce має 3 етапи / фази
Наведені нижче дії виконуються послідовно.
- Фаза картографа
Вхід з файлової системи HDFS.
- Перемішайте і сортуйте
Введення для переміщення та сортування - це вихід картографа
- Редуктор
Вхід у редуктор виводиться на переміщення та сортування.
MapReduce зрозуміє дані лише в поєднанні Key-value.
- Основне призначення етапу карти - зчитування всіх вхідних даних та їх перетворення чи фільтрація. Перетворені або відфільтровані дані додатково аналізуються діловою логікою на етапі скорочення, хоча фаза скорочення не є строго необхідною.
- Основна мета етапу скорочення - використання ділової логіки для відповіді на питання та вирішення проблеми.
Порівняння «голова до голови» між PIG та MapReduce (Інфографіка)
Нижче наведено чотири найкращих порівняння між 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
Основа для порівняння |
СВІГА |
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 (рядок)) AS word;
filtered_words = ФІЛЬТР слова за словом МАТЧИ '\\ w +';
word_groups = GROUP відфільтровані_words BY слово;
word_count = FOREACH word_groups ЗАГАЛЬНА КОЛЕТКА (filtered_words) AS count, group AS word;
order_word_count = ЗАМОВЛЕННЯ 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 (завдання, новий шлях (args (0)));
FileOutputFormat.setOutputPath (завдання, новий шлях (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, тут ми обговорили їх значення, порівняння між головами, ключові відмінності та висновки. Ви також можете переглянути наступні статті, щоб дізнатися більше -
- Свиня проти іскри - 10 корисних відмінностей для навчання
- Apache Pig vs Apache Hive - 12 найкращих корисних відмінностей
- Найкращі 15 речей, які потрібно знати про MapReduce vs Spark
- Як працює MapReduce?
- Розподілений кеш в Hadoop