Подтвердить что ты не робот

Pig vs Hive vs Native Map Reduce

У меня есть основное понимание того, что такое абстракции Pig, Hive. Но у меня нет четкого представления о сценариях, требующих сокращения Hive, Pig или native.

Я просмотрел несколько статей, которые в основном указывают на то, что Hive предназначен для структурированной обработки, а Pig - для неструктурированной обработки. Когда нам нужна нативная карта уменьшить? Можете ли вы указать несколько сценариев, которые невозможно решить с помощью Pig или Hive, но на родной карте уменьшить?

4b9b3361

Ответ 1

Сложная логика ветвления, которая имеет много вложенных, если.. else.. структур проще и быстрее реализовать в стандартном MapReduce, для обработки структурированных данных вы можете использовать Pangool, это также упрощает такие вещи, как JOIN. Также Standard MapReduce дает вам полный контроль, чтобы свести к минимуму количество заданий MapReduce, требуемых для потока данных, что соответствует производительности. Но это требует больше времени для кодирования и внесения изменений.

Apache Pig хорош для структурированных данных, но его преимуществом является способность работать с BAG-данными (все строки, которые сгруппированы по ключу), проще реализовать такие вещи, как:

  • Получить верхние N элементов для каждой группы;
  • Вычислить общее количество для каждой группы и поместить общее количество против каждой строки в группе;
  • Использовать фильтры Bloom для оптимизации JOIN;
  • Поддержка нескольких продуктов (когда PIG пытается минимизировать число на MapReduce Jobs, делая больше вещей в одном задании)

Hive лучше подходит для специальных запросов, но его основным преимуществом является то, что у него есть движок, который хранит и разбивает данные. Но его таблицы можно прочитать из Pig или Standard MapReduce.

Еще одна вещь: Hive и Pig плохо подходят для работы с иерархическими данными.

Ответ 2

Короткий ответ. Нам нужен MapReduce, когда нам нужен очень глубокий уровень и мелкозернистый контроль над тем, как мы хотим обрабатывать наши данные. Иногда не очень удобно выражать то, что нам нужно именно в терминах запросов Pig и Hive.

Это не должно быть абсолютно невозможно сделать, что вы можете использовать MapReduce, через Pig или Hive. Благодаря гибкости, предоставляемой Pig and Hive, вы можете как-то справиться с достижением своей цели, но это может быть не так гладко. Вы могли бы написать UDF или сделать что-то и добиться этого.

В использовании этих инструментов нет четкого различия. Это полностью зависит от вашего конкретного случая использования. На основе ваших данных и вида обработки вам нужно решить, какой инструмент лучше подходит для ваших требований.

Изменить:

Когда-то у меня был случай, когда мне приходилось собирать сейсмические данные и запускать на нем некоторые аналитики. Формат файлов, содержащих эти данные, был несколько странным. Некоторая часть данных была EBCDIC закодирована, а остальная часть данных была в двоичном формате. Это был в основном плоский двоичный файл без разделителей типа \n или что-то в этом роде. Мне было трудно найти способ обработать эти файлы с помощью Pig или Hive. В результате мне пришлось договориться с MR. Первоначально это заняло много времени, но постепенно он стал более плавным, поскольку MR действительно быстр, как только у вас будет готовый базовый шаблон.

Итак, как я уже говорил, это в основном зависит от вашего варианта использования. Например, повторение каждой записи вашего набора данных очень просто в Pig (просто foreach), но что, если вам нужно foreach n? Поэтому, когда вам нужен "тот" уровень контроля над тем, как вам нужно обрабатывать ваши данные, MR больше подходит.

Другая ситуация может быть, когда ваши данные являются иерархическими, а не строковыми, или если ваши данные сильно неструктурированы.

Проблема Metapatterns, включающая цепочку заданий и слияние задач, легче решать с использованием MR напрямую, а не с помощью Pig/Hive.

И иногда очень удобно выполнять определенную задачу с помощью некоторого инструмента xyz по сравнению с этим с помощью Pig/hive. ИМХО, МР оказывается в таких ситуациях лучше. Например, если вам нужно сделать некоторые статистические анализы в вашем BigData, R, используемое с потоковой передачей Hadoop, вероятно, является лучшим вариантом.

НТН

Ответ 3

MapReduce:

Strengths:
      works both on structured and unstructured data.
      good for writing complex business logic.

Weakness:
     long development type
     hard to achieve join functionality

Улей:

Strengths:
     less development time.
     suitable for adhoc analysis.
     easy for joins

Weakness :
     not easy for complex business logic.
     deals only structured data.

Свиньи

Strengths :
      Structured and unstructured data.
      joins are easily written.

Weakness:
     new language to learn.
     converted into mapreduce.

Ответ 4

Улей

Плюсы:

Sql как Ребята из базы данных любят это. Хорошая поддержка структурированных данных. В настоящее время поддерживаются схемы базы данных и представления, такие как структура Поддержка одновременных многопользовательских пользователей, сценариев с несколькими сеансами. Большая поддержка сообщества. Hive, сервер Hiver, Hiver Server2, Impala, Centry уже

Против: Производительность ухудшается по мере того, как данные становятся все более значительными, чем проблемы с памятью. не может много сделать с ним. Иерархические данные - задача. Для неструктурированных данных требуется udf-подобный компонент Комбинация нескольких методов может быть динамической частью кошмара с UTDF в случае больших данных и т.д.

Свиньи: Плюсы: Большой script язык потока данных.

Минусы:

Неструктурированные данные требуют udf как компонента Не большая поддержка сообщества.

MapReudce: Плюсы: Не соглашайтесь с "труднодоступными функциями соединения", если вы понимаете, какое соединение вы хотите реализовать, вы можете реализовать с несколькими строками кода. В большинстве случаев MR дает лучшую производительность. Поддержка MR для иерархических данных велика, особенно реализует древовидные структуры. Улучшенный контроль при разбиении/индексировании данных. Цепочка работы.

Против: Вам нужно знать api очень хорошо, чтобы получить лучшую производительность и т.д. Код/отладка/поддержка

Ответ 5

Сценарии, где Hadoop Map Reduce предпочтительнее Hive или PIG

  • Когда вам нужно определенное управление программой драйвера

  • Всякий раз, когда задание требует выполнения пользовательского Partitioner

  • Если уже существует предопределенная библиотека Java Mappers или Reducers для задания

  • Если вам требуется достаточное количество тестируемых при объединении множества больших наборов данных
  • Если приложение требует устаревших требований кода, которые управляют физической структурой
  • Если задание требует оптимизации на определенном этапе обработки, наилучшим образом используя трюки, такие как объединение in-mapper
  • Если задание имеет сложное использование распределенного кеша (реплицированное объединение), перекрестные продукты, группировки или объединения

Сравнение между уменьшением карты /Pig/Hive

Плюсы свиньи/улья:

  • Hadoop MapReduce требует больше усилий по разработке, чем Pig and Hive.
  • Подходы к кодированию Pig и Hive медленнее, чем полностью настроенная программа Hadoop MapReduce.
  • При использовании Pig и Hive для выполнения заданий разработчикам Hadoop не нужно беспокоиться о несоответствии версий.
  • Существует очень ограниченная возможность для разработчиков писать ошибки уровня Java при кодировании в Pig или Hive.

Взгляните на этот пост для сравнения Pig Vs Hive.

Ответ 6

Все, что мы можем сделать с помощью PIG и HIVE, может быть достигнуто с помощью MR (иногда это займет много времени). PIG и HIVE используют MR/SPARK/TEZ внизу. Таким образом, все, что может сделать MR, может быть или не быть возможным в Hive и PIG.

Ответ 7

Здесь - отличное сравнение. Он определяет все сценарии использования.