Відмінності між PIG та MapReduce

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

Вступ до PIG

Pig - це потік даних та мова високого рівня. Свиня працює з будь-якою з версій Hadoop.

Компоненти свині

  • Свиня латинська - мова, що використовується для вираження потоків даних
  • Pig Engine - двигун на вершині Hadoop

Переваги PIG

  • Усуває потребу користувачів у налаштуванні Hadoop
  • Ізолює користувачів від змін в інтерфейсах Hadoop.
  • Підвищення продуктивності праці.
  1. В одному тесті 10 рядків латинської свині - 200 ліній Java
  2. На написання на Java потрібно 4 години, а на латинській свині - близько 15 хвилин
  3. Відкрита система для програмістів, які не є 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, тут ми обговорили їх значення, порівняння між головами, ключові відмінності та висновки. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Свиня проти іскри - 10 корисних відмінностей для навчання
  2. Apache Pig vs Apache Hive - 12 найкращих корисних відмінностей
  3. Найкращі 15 речей, які потрібно знати про MapReduce vs Spark
  4. Як працює MapReduce?
  5. Розподілений кеш в Hadoop

Категорія: