Разница между HBase и Hadoop/HDFS

Это наивный вопрос, но я новичок в парадигме NoSQL и мало знаю об этом. Поэтому, если кто-то может помочь мне четко понять разницу между HBase и Hadoop или дать некоторые указатели, которые могут помочь мне понять разницу.

До сих пор я занимался некоторыми исследованиями и учебой. к моему пониманию, Hadoop предоставляет фреймворк для работы с сырым куском данных (файлов) в HDFS, а HBase - это движок базы данных выше Hadoop, который в основном работает со структурированными данными вместо необработанного блока данных. Hbase обеспечивает логический уровень по HDFS, как это делает SQL. Правильно ли это?

Pls не стесняйтесь исправлять меня.

Спасибо.

Ответ 1

Hadoop - это, в основном, три вещи: FS (распределенная файловая система Hadoop), вычислительная среда (MapReduce) и мост управления (еще один посредник по ресурсам). HDFS позволяет хранить огромные объемы данных распределенным (обеспечивает более быстрый доступ для чтения/записи) и избыточным (обеспечивает более высокую доступность) способом. А MapReduce позволяет вам обрабатывать эти огромные данные распределенным и параллельным способом. Но MapReduce не ограничивается только HDFS. Будучи FS, HDFS не имеет возможности произвольного чтения/записи. Это хорошо для последовательного доступа к данным. И вот тут-то и появляется HBase. Это база данных NoSQL, которая работает поверх кластера Hadoop и предоставляет вам произвольный доступ к вашим данным в режиме реального времени для чтения/записи.

Вы можете хранить как структурированные, так и неструктурированные данные в Hadoop, а также в HBase. Оба они предоставляют вам множество механизмов для доступа к данным, например, оболочка и другие API. Кроме того, HBase хранит данные в виде пар ключ/значение столбчатым способом, тогда как HDFS сохраняет данные в виде плоских файлов. Некоторые из характерных особенностей обеих систем:

Hadoop

  1. Оптимизирован для потокового доступа к большим файлам.
  2. Следует идеологии однократного чтения и прочтения.
  3. Не поддерживает случайное чтение/запись.

HBase

  1. Хранит пары ключ/значение в столбчатой форме (столбцы объединяются в группы столбцов).
  2. Обеспечивает доступ с небольшими задержками к небольшим объемам данных из большого набора данных.
  3. Предоставляет гибкую модель данных.

Hadoop больше всего подходит для автономной пакетной обработки, в то время как HBase используется, когда у вас есть потребности в реальном времени.

Аналогичное сравнение будет между MySQL и Ext4.

Ответ 2

Apache Проект Hadoop включает в себя четыре ключевых модуля

  • Hadoop Common. Общие утилиты, поддерживающие другие модули Hadoop.
  • распределенная файловая система Hadoop (HDFS ™): распределенная файловая система, обеспечивающая высокопроизводительный доступ к данным приложения.
  • Hadoop YARN: структура планирования заданий и управления ресурсами кластера.
  • Hadoop MapReduce: система YARN для параллельной обработки больших наборов данных.

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

Когда использовать HBase:

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

Но у HBase есть некоторые ограничения

  • Он не может использоваться для классических транзакционных приложений или даже реляционной аналитики.
  • Это также не полная замена HDFS при выполнении большого пакета MapReduce.
  • Он не говорит SQL, имеет оптимизатор, поддерживает транзакции кросс-записей или объединения.
  • Он не может использоваться со сложными шаблонами доступа (например, объединениями)

Резюме:

Рассмотрим HBase, когда вы загружаете данные по ключу, просматриваете данные по ключу (или диапазону), обслуживаете данные по ключу, запрашиваете данные по ключу или сохраняете данные по строке, которые не соответствуют схеме.

Взгляните на Do and Do not of HBase из cloudera в блоге.

Ответ 3

Hadoop использует распределенную файловую систему i.e HDFS для хранения bigdata. Но есть определенные ограничения HDFS и Inorder для преодоления этих ограничений, появились базы данных NoSQL, такие как HBase, Cassandra и Mongodb.

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

Как и все другие файловые системы, HDFS предоставляет нам хранилище, но с отказоустойчивостью с высокой пропускной способностью и меньшим риском потери данных (из-за репликации). Но, будучи файловой системой, HDFS не имеет случайного доступа к чтению и записи. Здесь HBase входит в картину. Это распределенное, масштабируемое, большое хранилище данных, смоделированное после Googles BigTable. Кассандра несколько похожа на hbase.

Ответ 4

HBase и HDFS на одном изображении

Both HBase and HDFS in one picture

Note:

Проверьте демоны HDFS (выделены зеленым цветом), например DataNode (совместно расположенные серверы регионов) и NameNode в кластере, в которых есть HBase и Hadoop HDFS

HDFS - это распределенная файловая система, которая хорошо подходит для хранения больших файлов. который не обеспечивает быстрый поиск отдельных записей в файлах.

HBase, с другой стороны, построен на основе HDFS и обеспечивает быстрый поиск и обновление записей для больших таблиц. Иногда это может быть точкой концептуальной путаницы. HBase внутренне помещает ваши данные в индексированные "StoreFiles", которые существуют в HDFS для высокоскоростного поиска.

Как это выглядит?

Что ж, на уровне инфраструктуры у каждой ведомой машины в кластере есть следующие демоны

  • Региональный сервер - HBase
  • Узел данных - HDFS

Slave machine

Как быстро с поиском?

HBase обеспечивает быстрый поиск в HDFS (иногда и в других распределенных файловых системах) в качестве базового хранилища, используя следующую модель данных

  • Таблица

    • Таблица HBase состоит из нескольких строк.
  • Ряд

    • Строка в HBase состоит из ключа строки и одного или нескольких столбцов со значениями, связанными с ними. Строки сортируются в алфавитном порядке по ключу строки по мере их сохранения. По этой причине дизайн ключа строки очень важен. Цель состоит в том, чтобы хранить данные таким образом, чтобы связанные строки находились рядом друг с другом. Распространенным шаблоном ключей строк является домен сайта. Если ваши ключи строк являются доменами, вам, вероятно, следует хранить их в обратном порядке (org.apache.www, org.apache.mail, org.apache.jira). Таким образом, все домены Apache располагаются рядом друг с другом в таблице, а не распределяются по первой букве субдомена.
  • Колонка

    • Столбец в HBase состоит из семейства столбцов и спецификатора столбца, разделенных символом: (двоеточие).
  • Семейство столбцов

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

    • К семейству столбцов добавляется спецификатор столбца для предоставления индекса для данного фрагмента данных. Учитывая контент семейства столбцов, спецификатор столбца может быть content: html, а другой может быть content: pdf. Хотя семейства столбцов фиксируются при создании таблицы, квалификаторы столбцов являются изменяемыми и могут сильно различаться между строками.
  • Cell

    • Ячейка представляет собой комбинацию строки, семейства столбцов и спецификатора столбца и содержит значение и метку времени, которая представляет версию значений.
  • Отметка

    • Временная метка записывается рядом с каждым значением и является идентификатором для данной версии значения. По умолчанию timestamp представляет время на RegionServer, когда данные были записаны, но вы можете указать другое значение отметки времени при помещении данных в ячейку.

Поток запросов на чтение от клиента:

Client read request flow

Что такое мета таблица на картинке выше?

meta table

  После того, как вся информация, поток чтения HBase для поиска касается этих объектов

  1.         Сначала сканер ищет ячейки строк в блочном кеше - кеше чтения. Значения недавно прочитанных ключей кешируются здесь, а наименьшее количество недавно использованных исключается, когда требуется память.
  2.   Затем сканер просматривает MemStore, кэш записи в памяти, содержащий самые последние записи.
  3.   Если сканер не найдет все ячейки строки в MemStore и Block Cache, то HBase будет использовать индексы Block Cache и фильтры Блума для загрузки HFiles в память, которая может содержать целевые ячейки строки.

   источники и дополнительная информация:

  1. Модель данных HBase
  2. HBase architecute

Ответ 5

Ссылка: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

Hadoop - это общее имя для нескольких подсистем:  1) HDFS. Распределенная файловая система, которая распределяет данные по кластеру машин, занимающихся резервированием и т.д.  2) Уменьшить карту. Система управления заданиями в верхней части HDFS - для управления заданиями сокращения карт (и других типов), обрабатывающих данные, хранящиеся на HDFS.

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

HBase, с другой стороны, в базе данных на основе столбцов. Он использует HDFS в качестве хранилища - который заботится о резервном копировании \redundency\etc, но его "онлайн-магазин" - это значит, что вы можете запросить его для определенной строки \rows и т.д. И получить немедленное значение.

Ответ 6

HDFS - это распределенная файловая система на основе Java, которая позволяет хранить большие данные на нескольких узлах в кластере Hadoop. Принимая во внимание, что HBase является базой данных NoSQL (аналогично NTFS и MySQL).

Как HDFS, так и HBase хранят все виды данных, такие как структурированные, полуструктурированные и неструктурированные в распределенной среде.

Различия между HDFS и HBase

  • HBase обеспечивает доступ с небольшими задержками к небольшим объемам данных в больших наборах данных в то время как HDFS обеспечивает операции с высокой задержкой.
  • HBase поддерживает произвольное чтение и запись, в то время как HDFS поддерживает WORM или несколько раз).
  • Доступ к HDFS в основном или в основном осуществляется через задания MapReduce, а HBase - к с помощью команд оболочки, Java API, REST, Avro или Thrift API.

HDFS хранит большие наборы данных в распределенной среде и использует пакет  обработка этих данных.

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

enter image description here