Когда использовать Hadoop, HBase, Hive и Pig?

каковы преимущества использования либо Hadoop или HBase или куст ?

в моем понимании, HBase избегает использования map-reduce и имеет ориентированное на столбец хранилище поверх HDFS. куст является sql-подобный интерфейс для Hadoop и HBase.

Я также хотел бы знать, как куст сравнивает с свинья.

15 ответов


MapReduce-это просто основы вычислений. HBase не имеет к этому никакого отношения. Тем не менее, вы можете эффективно поместить или извлечь данные в/из HBase, написав задания MapReduce. В качестве альтернативы вы можете писать последовательные программы, используя другие API HBase, такие как Java, для размещения или извлечения данных. Но мы используем Hadoop, HBase и т. д. Для обработки гигантских объемов данных, поэтому это не имеет большого смысла. Использование обычных последовательных программ было бы крайне неэффективным, когда ваши данные слишком огромный.

возвращаясь к первой части вашего вопроса, Hadoop-это в основном 2 вещи: a распределенная файловая система (HDFS) + a вычислительная или обрабатывающая структура (MapReduce). Как и все другие FS, HDFS также предоставляет нам хранилище, но отказоустойчивым образом с высокой пропускной способностью и меньшим риском потери данных (из-за репликации). Но, будучи FS, HDFS не хватает случайный доступ для чтения и записи. Вот где HBase входит в картину. Это распределенное, масштабируемое, большое хранилище данных, по образцу BigTable от Google. Он хранит данные как пары ключ / значение.

иду в улей. Он предоставляет нам данные хранение объекты поверх существующего кластера Hadoop. Наряду с этим он обеспечивает SQL как интерфейс, который упрощает вашу работу, если вы исходите из фона SQL. Вы можете создавать таблицы в Hive и хранить там данные. Наряду с этим вы даже можете отобразить свое существующее HBase таблицы для улья и работать на них.

в то время как свинья-в основном потока данных язык, что позволяет нам обрабатывать огромные объемы данных очень легко и быстро. Свиньи в основном имеет 2 части: свинья переводчик и язык PigLatin. Вы пишете сценарий свиньи в PigLatin и с помощью интерпретатора свиньи обрабатываете их. Свинья делает нашу жизнь намного проще, иначе писать MapReduce всегда непросто. На самом деле в некоторых случаях это действительно может стать боль.

Я написал статья о кратком сравнении различных инструментов экосистемы Hadoop какое-то время назад. Это не глубокое сравнение, а краткое введение в каждый из этих инструментов, которые могут помочь вам начать работу. (Просто чтобы добавить к моему ответу. Нет самостоятельного продвижения)

оба запроса Hive и Pig преобразуются в задания MapReduce под капотом.

HTH


недавно я внедрил платформу данных Hive в своей фирме и могу говорить с ней от первого лица, так как я был командой одного человека.

цель

  1. чтобы иметь ежедневные файлы веб-журнала, собранные с 350 + серверов ежедневно запрашиваемые через некоторые среда SQL язык
  2. для замены ежедневных данных агрегации, генерируемых через в MySQL С куста
  3. создание пользовательских отчетов через запросы в куст

Параметры Архитектуры

Я сравнил следующие параметры:

  1. куст+файловую систему HDFS
  2. Улей+HBase - запросы были слишком медленными, поэтому я сбросил эту опцию

конструкция

  1. ежедневные файлы журнала были перенесены в файловой системы HDFS
  2. г-н Джобс проанализировал эти файлы журнала и выходные файлы в файловой системы HDFS
  3. создание таблиц Hive с разделы и местоположения, указывающие на файловой системы HDFS мест
  4. создание сценариев запросов Hive (назовите это бумага HQL если вам нравится, как diff от SQL), который в свою очередь запускал MR jobs в фоновом режиме и генерировал данные агрегации
  5. поставить все эти шаги в в Oozie рабочий процесс-по расписанию с Daily в Oozie координатор

резюме

HBase похоже на карту. Если вы знать ключ, вы можете мгновенно получить значение. Но если вы хотите знать, сколько целых ключей в Hbase находится между 1000000 и 2000000, что не подходит для в HBase.

Если у вас есть данные для агрегирования, свертывания, анализа по строкам, рассмотрите куст.

надеюсь, это поможет.

куст на самом деле камни очень хорошо...Я знаю, я прожил его уже 12 месяцев... Так же HBase...


считайте, что вы работаете с СУБД и должны выбрать, что использовать - полное сканирование таблицы или доступ к индексу - но только один из них.
Если вы выбрали полное сканирование таблицы-используйте hive. Если доступ к индексу-HBase.


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

в Hadoop есть четыре основных модуля.

  1. Hadoop И Общие: общие утилиты, поддерживающие другие модули Hadoop.

  2. Распределенная Файловая Система Hadoop (файловой системы HDFS™): распределенная файловая система, которая обеспечивает доступ с высокой пропускной способностью к данным приложения.

  3. Hadoop пряжа: основой для планирования заданий и управления ресурсами кластера.

  4. Hadoop MapReduce: пряж-основанная система для параллельной обработки больших наборов данных.

прежде чем идти дальше, отметим, что у нас есть три различных типов данных.

  • структурированная: структурированная данные имеют сильную схему, и схема будет проверяться во время операции записи и чтения. например, данные в системах СУБД, таких как Oracle, MySQL Server и т. д.

  • неструктурированный: данные не имеют никакой структуры, и это может быть любая форма-журналы веб-сервера,электронная почта, изображения и т. д.

  • полуструктурированного: данные не строго структурированы, но имеют некоторую структуру. например, XML-файлы.

в зависимости от типа обрабатываемых данных, мы должны выбрать правильную технологию.

еще несколько проектов, которые являются частью Hadoop:

  • ™для HBase: масштабируемая распределенная база данных, поддерживающая структурированное хранение данных для больших таблиц.

  • куст™: инфраструктура хранилища данных, обеспечивающая суммирование данных и специальные запросы.

  • ™свинья: высокий уровень язык потока данных и структура выполнения для параллельных вычислений.

улей против свиньи сравнение можно найти по этой статьи и мой другой пост в этом SE вопрос.

в HBase не будет заменять Map Reduce. HBase - это масштабируемая распределенная база данных & Карта Уменьшить - Это модель программирования для распределенной обработки данных. Map Reduce может воздействовать на данные в HBASE в обработка.

можно использовать УЛЕЙ / HBASE для структурированных / полуструктурированных данных и обработки их с помощью Hadoop Map Reduce

можно использовать Sqoop и импортировать структурированные данные из традиционной базы данных СУБД Oracle, SQL Server и т. д. и обрабатывать их с помощью Hadoop Map Reduce

можно использовать FLUME для обработки неструктурированных данных и процесса с помощью Hadoop Map Reduce

посмотреть: Использование Hadoop Дела.

куст следует использовать для аналитического запроса данных, собранных за определенный период времени. e.g вычислять тенденции, суммировать журналы веб-сайтов, но не использовать для запросов в реальном времени.

HBase подходит для запросов больших данных в режиме реального времени. Facebook использует его для обмена сообщениями и аналитики в реальном времени.

свинья может использоваться для построения потоков данных, выполнения запланированных заданий, хруста больших объемов данных, агрегировать / суммировать его и хранить в системах баз данных отношений. Хорошо для специального анализа.

куст может использоваться для специального анализа данных, но он не может поддерживать все неструктурированные форматы данных, в отличие от PIG.


Для сравнения Hadoop Vs Cassandra / HBase прочитайте это в должности.

в основном HBase позволяет очень быстро читать и писать с масштабируемостью. Насколько быстро и масштабируемо? Facebook использует его для управления статусами пользователей, фотографиями, сообщениями чата и т. д. HBase так быстро иногда стеки были разработаны Facebook, чтобы использовать HBase в качестве хранилища данных для самого улья.

где as Hive больше похож на решение для хранения данных. Вы можете использовать синтаксис похож на SQL для запроса содержимого улья, что приводит к сокращению задания карты. Не идеально для быстрых, транзакционных систем.


Я работал над обработкой архитектуры лямбда в режиме реального времени и пакетных нагрузок. Обработка в реальном масштабе времени необходима где быстрые решения нужно быть принятым в случае пожарной сигнализации посылают датчиком или обнаружением мошенничества в случае банковских операций. Пакетная обработка необходима для суммирования данных, которые могут быть поданы в BI-системы.

мы Hadoop экосистемные технологии для вышеуказанных приложений.

Обработка В Реальном Времени

Apache Storm: Поток обработки данных, применение правила

HBase: хранилище данных для обслуживания панели мониторинга в реальном времени

Пакетная Обработка Hadoop: хрустящий огромный кусок данных. Обзор 360 градусов или добавление контекста к событиям. Интерфейсы или фреймворки, такие как Pig, MR, Spark, Hive, Shark, помогают в вычислениях. Этому слою нужен планировщик, для которого Oozie-хороший вариант.

уровень обработки событий

Apache Кафка был первым слоем, чтобы потреблять высокий события скорости от датчика. Kafka обслуживает поток данных как в реальном времени, так и пакетной аналитики через соединители Linkedin.


понимание в глубину

Hadoop

Hadoop является проектом с открытым исходным кодом . Вместо того чтобы писать!--11--> на Java, мы можем написать запрос MapReduce и процесс его.

  • Двигатель Exceution: соединительная часть HiveQL process engine и MapReduce - это Hive Двигатель Исполнение. Механизм выполнения обрабатывает запрос и генерирует результаты так же, как MapReduce results. Он использует аромат MapReduce.

  • HDFS или HBase: Hadoop распределенная файловая система или HBase несколько методы хранения данных для хранения данных в файловой системе.


  • прежде всего мы должны понять, что Hadoop был создан как более быструю альтернативу СУБД. Обрабатывать большой объем данных с очень высокой скоростью, что ранее занимало много времени в РСУБД.

    теперь нужно знать два термина:

    1. Структурированные Данные: это данные, которые мы использовали в традиционных СУБД и разделены на четко определенные структуры.

    2. Неструктурированных Данных: это важно понимать, около 80% мировых данных неструктурированы или полуструктурированы. Это данные, которые находятся в необработанной форме и не могут быть обработаны с помощью RDMS. Пример: данные facebook, twitter. (http://www.dummies.com/how-to/content/unstructured-data-in-a-big-data-environment.html).

    таким образом, большой объем данных генерируется в последние несколько лет и данные были в основном неструктурированными, что породило HADOOP. Он в основном использовался для очень большого объема данных, который занимает неосуществимое количество времени с использованием РСУБД. У него было много недостатков, что он не мог использоваться для сравнительно небольших данных в режиме реального времени, но им удалось устранить его недостатки в новой версии.

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

    Hadoop можно просто сказать, как две вещи : в MapReduce и файловой системы HDFS. Mapreduce-это место, где происходит обработка, а HDFS-база данных, в которой хранятся данные. Эта структура последовала червь principal т. е. написать один раз прочитать несколько раз. Таким образом, как только мы храним данные в HDFS, мы не можем вносить изменения. Этот привело к созданию в HBase, продукт NOSQL, где мы можем вносить изменения в данные также после его записи один раз.

    но со временем мы увидели, что у Hadoop было много недостатков, и для этого мы создали другую среду над структурой Hadoop. Свинья и улей-два популярных примера.

    куст создан для людей с SQL фон. Написанные запросы похожи на SQL с именем as на hiveql. УЛЕЙ был разработан для обработки полностью структурированные данные. Он не используется для ustructured данных.

    свинья С другой стороны, имеет свой собственный язык запросов, т. е. СВИНЬЯ. Его можно использовать для обоих структурированная а также неструктурированных данных.

    переходя к разнице, когда использовать улей и когда использовать свинью, я не думаю, что кто-то, кроме архитектора свиньи, может сказать. Перейти по ссылке : https://developer.yahoo.com/blogs/hadoop/comparing-pig-latin-sql-constructing-data-processing-pipelines-444.html


    Я новичок в Hadoop, в настоящее время я работаю над проектом с Hadoop и Pig Latin. с небольшим опытом я могу прокомментировать Pig vs Hive.

    вот сравнение:

    • свиная латынь процедурна, где улей декларативен.
    • Pig Latin позволяет разработчикам конвейера решать, где данные контрольной точки в конвейере.
    • Pig Latin позволяет разработчику выбирать конкретные реализации операторов напрямую, а не полагаться на оптимизатор.
    • Pig Latin поддерживает расколы в трубопроводе.
    • Pig Latin позволяет разработчикам вставлять свой собственный код почти в любом месте конвейера данных.

    позвольте мне попытаться ответить в нескольких словах.

    Hadoop-это эко-система, которая состоит из всех других инструментов. Итак, вы не можете сравнить Hadoop, но вы можете сравнить MapReduce.

    вот мои несколько копеек:

    1. куст: если ваша потребность очень SQLish означает, что ваш оператор проблемы может быть удовлетворен SQL, то проще всего было бы использовать Hive. Другой случай, когда вы используете hive, - это когда вы хотите, чтобы сервер имел определенную структуру данные.
    2. Свин: Если вам удобно с латынью свиньи, и вам нужно больше трубопроводов данных. Кроме того, ваши данные не имеют структуры. В таких случаях можно использовать свинью. Честно говоря, нет большой разницы между ульем и свиньей в отношении случаев использования.
    3. MapReduce: если ваша проблема не может быть решена с помощью SQL straight, вы сначала должны попытаться создать UDF для Hive & Pig, а затем, если UDF не решает проблему, то получить его сделано через MapReduce имеет смысл.

    свинья: лучше обрабатывать файлы и данные очистки пример: удаление значений null, обработка строк, ненужных значений Hive: для запроса очищенных данных


    1.Мы используем Hadoop и хранение больших данных (я.е.структура,Unstructure и Semistructure данных ) в виде файла формата txt и CSV.

    2.Если нам нужны столбчатые обновления в наших данных, мы используем HBase tool

    3.В случае Hive мы храним большие данные в структурированном формате и в дополнение к этому мы предоставляем анализ этих данных.

    4.Pig-это инструмент, который использует латинский язык Свиньи для анализа данных, которые находятся в любом формат(структура,semistructure и unstructure).


    4 ПРИЧИНЫ ИСПОЛЬЗОВАНИЯ HADOOP ДЛЯ НАУКИ О ДАННЫХ: - - -

    за последние 10 лет или около того, крупные веб-компании, такие как Google, Yahoo! Amazon и Facebook успешно применяют крупномасштабные алгоритмы машинного обучения над большими наборами данных, создавая инновационные продукты данных, такие как системы онлайн-рекламы и рекомендательные механизмы.

    Apache Hadoop быстро становится центральным хранилищем больших данных на предприятии и, таким образом, является естественной платформой с каким предприятием он может теперь применять науку о данных к различным бизнес-проблемам, таким как рекомендация продукта, обнаружение мошенничества и анализ настроений.

    основываясь на шаблонах уточнения, изучения, обогащения, которые мы описали в наших шаблонах использования Hadoop whitepaper, давайте рассмотрим некоторые из основных причин использования Hadoop для науки о данных, которые также захватываются в следующей презентации:

    [slideshare id=18622467 & doc=whyhadoopfordatascience-130411110136-phpapp02]

    ПРИЧИНА 1: ИССЛЕДОВАНИЕ ДАННЫХ С ПОЛНЫМИ НАБОРАМИ ДАННЫХ Ученые любят свою рабочую среду. Будь то R, SAS, Matlab или Python, им всегда нужен ноутбук с большим объемом памяти для анализа данных и построения моделей. В мире больших данных памяти ноутбука никогда не бывает достаточно, а иногда даже и близко.

    общим подходом является использование выборки большого набора данных, большой выборки, как может вписывается в память. С помощью Hadoop теперь можно выполнять множество исследовательских задач анализа данных для полных наборов данных без выборки. Просто напишите сценарий map-reduce, Pig или HIVE, запустите его непосредственно на Hadoop над полным набором данных и получите результаты прямо на свой ноутбук.

    ПРИЧИНА 2: ДОБЫЧА БОЛЬШИХ НАБОРОВ ДАННЫХ Во многих случаях алгоритмы машинного обучения достигают лучших результатов, когда у них больше данных для изучения, особенно для таких методов, как кластеризация, выброс обнаружение и рекомендатели продукта.

    исторически большие наборы данных были недоступны или слишком дороги для приобретения и хранения, и поэтому практикующие машинное обучение должны были найти инновационные способы улучшения моделей с довольно ограниченными наборами данных. С Hadoop в качестве платформы, которая обеспечивает линейно масштабируемое хранение и вычислительную мощность, теперь вы можете хранить все данные в формате RAW и использовать полный набор данных для создания лучших, более точных моделей.

    ПРИЧИНА 3: БОЛЬШОЙ МАСШТАБНАЯ ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА НЕОБРАБОТАННЫХ ДАННЫХ Как скажут вам многие ученые, 80% работы в области науки о данных обычно связано с получением данных, преобразованием, очисткой и извлечением функций. Этот шаг "предварительной обработки" преобразует необработанные данные в формат, потребляемый алгоритмом машинного обучения, обычно в виде матрицы объектов.

    Hadoop-идеальная платформа для эффективной и распределенной предварительной обработки больших наборов данных с использованием map-reduce или инструменты, такие как PIG, HIVE и скриптовые языки, такие как Python. Например, если ваше приложение включает обработку текста, часто необходимо представлять данные в формате word-vector с помощью TFIDF, который включает подсчет частот слов по большому корпусу документов, идеально подходящему для пакетного задания map-reduce.

    аналогично, если ваше приложение требует объединения больших таблиц с миллиардами строк для создания векторов объектов для каждого объекта данных, HIVE или PIG очень полезны и эффективно для этой задачи.

    ПРИЧИНА 4: ГИБКОСТЬ ДАННЫХ Часто упоминается, что Hadoop является "схемой при чтении", в отличие от большинства традиционных систем СУБД, которые требуют строгого определения схемы, прежде чем любые данные могут быть включены в них.

    "Schema on read "создает" гибкость данных": когда требуется новое поле данных, не требуется проходить длительный проект редизайна схемы и миграции базы данных в производстве, который может длиться месяцы. Этот положительное влияние рябь через организацию и очень быстро каждый хочет использовать Hadoop для своего проекта, чтобы достичь того же уровня гибкости, и получить конкурентное преимущество для своего бизнеса и линейки продуктов.

    куст:---

    Hive-это инструмент инфраструктуры хранилища данных для обработки структурированных данных в Hadoop. Он находится поверх Hadoop для суммирования больших данных и упрощает запросы и анализ.

    ЕСЛИ ВЫ НЕ ЗНАЕТЕ PYTHON ИЛИ JAVA ДЛЯ ОБРАБОТКИ КОДА MAPREDUCE...ТОГДА ВЫ БУДЕТЕ НЕ БЕСПОКОИТЬСЯ..НО ЕСЛИ ВЫ ЗНАЕТЕ SQL, ТО ВЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ HIVE..ЭТО ТАКЖЕ НАЗЫВАЕТСЯ HIVEQL..ДЛЯ ЗАПРОСА PROCEESS БОЛЬШИХ НАБОРОВ ДАННЫХ...

    свин:--

    Зачем Нам Нужна Apache Pig? Программисты, которые не так хороши в Java, обычно использовали для борьбы с Hadoop, особенно при выполнении любых задач MapReduce. Apache свинья является благом для всех таких программисты.

    используя латынь свиньи, программисты могут легко выполнять задачи MapReduce без необходимости вводить сложные коды в Java.

    Apache Pig использует подход с несколькими запросами, тем самым уменьшая длину кодов. Например, операция, которая потребует от вас ввести 200 строк кода (LoC) в Java, может быть легко выполнена, набрав менее 10 LoC в Apache Pig. В конечном счете Apache Pig сокращает время разработки почти в 16 раз.

    свинья латынь SQL-как язык и легко узнать Apache Pig, когда вы знакомы с SQL.

    Apache Pig предоставляет множество встроенных операторов для поддержки операций с данными, таких как соединения, фильтры, заказ и т. д. Кроме того, он также предоставляет вложенные типы данных, такие как кортежи, сумки и карты, которые отсутствуют в MapReduce

    HBASE:--

    Apache HBase-одна из самых популярных нереляционных баз данных, построенных поверх Hadoop и HDFS (распределенная файловая система Hadoop). Он также известен как база данных Hadoop. Как проект Apache, HBase-это открытая, версионная и распределенная NoSQL-БД, написанная на языке Java. Он построен на концепциях Bigtable от Google. Apache HBase подходит для случаев, когда вам нужен доступ в реальном времени и случайный доступ для чтения/записи к огромным объемам данных (Big data). Поскольку HBase работает поверх HDFS, производительность также зависит от аппаратной поддержки. Нам нужно предоставить достаточное количество узлов (минимум 5), чтобы получить лучшее спектакль.

    каковы особенности HBase NoSQL DB? Apache HBase-это база данных, ориентированная на столбцы, которая поддерживает динамическую схему базы данных. Он в основном работает поверх HDFS и поддерживает задания MapReduce. HBase также поддерживает другие языки высокого уровня для обработки данных. Давайте посмотрим на различные функции HBase:.

    масштабируемость: HBase поддерживает масштабируемость как в линейном, так и в модульном форма

    Sharding: HBase поддерживает автоматический sharding таблиц. Он также настраивается.

    распределенное хранение: HBase поддерживает распределенное хранилище, такое как HDFS

    последовательность: Он поддерживает последовательные операции чтения и записи

    поддержка перехода: HBase поддерживает автоматическую отработку отказа

    поддержка API: HBase поддерживает API Java, поэтому клиенты могут получить к нему доступ легко Поддержка MapReduce: HBase поддерживает MapReduce для параллельной обработки большого объема данных

    поддержка резервного копирования: HBase поддерживает резервное копирование заданий Hadoop MapReduce в таблицах HBase Обработка в реальном времени: он поддерживает кэш блоков и фильтры цветения. Таким образом, обработка запросов в реальном времени проста


    Очистка данных в Pig очень проста, подходящим подходом будет очистка данных через pig, а затем обработка данных через hive и последующая загрузка их в hdfs.


    использование улья, Hbase и Свиньи w.r.т. мой опыт работы в реальном времени в разных проектах.

    Hive используется в основном для:

    --Analytics цель, где вам нужно сделать анализ данных истории

    --создание бизнес-отчетов на основе определенных столбцов

    --эффективное управление данными вместе с метаданными

    --соединения таблиц по определенным столбцам, которые часто используются, используя сегментацию концепция

    --эффективное хранение и запрос с использованием концепции секционирования

    --не полезно для операций/уровень ряда операций, как обновление, удаление и т. д.

    свинья в основном используется для:

    --частый анализ данных на огромных данных

    --генерация агрегированных значений / рассчитывает на огромные данные

    --генерация ключевых показателей эффективности корпоративного уровня очень часто

    HBase в основном используется:

    --для обработка данных в реальном времени

    --для эффективного управления сложной и вложенной схемой

    --для реального времени запроса и более быстрый результат

    --для легкой масштабируемости со столбцами

    --полезно для операций уровня транзакций / строк, таких как обновление, удаление и т. д.