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

130

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

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

Пожалуйста, не стесняйтесь поправлять меня.

Спасибо.

Дхавал Шах
источник
7
Может быть, тогда заголовок вопроса должен быть «Разница между HBase и HDFS»?
Мэтт Болл

Ответы:

248

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

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

Hadoop

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

HBase

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

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

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

Тарик
источник
как насчет использования hbase в качестве datalake для очень больших объемов данных (небольших файлов)? может ли он управлять таким же объемом данных, как hdfs?
Mehdi TAZI
@MehdiTAZI определенно. HBase работает поверх HDFS, поэтому не нужно беспокоиться о масштабируемости. вам просто нужно убедиться, что вы используете HBase, поскольку он должен использоваться для достижения максимальной производительности
Тарик
как насчет операционных проблем?
Mehdi TAZI
Я бы не сказал, что HBase - кошмар для оперативной команды, но в нем есть несколько областей, в которых все еще есть возможности для улучшения, и сообщество очень много работает, чтобы это исправить. Но это верно для любого программного обеспечения. ИМХО, нет инструмента / технологии для доказательства проблемы. Если он соответствует вашим требованиям, вам обязательно стоит попробовать. Это лабиринтный инструмент для обработки ваших случайных потребностей чтения / записи в реальном времени.
Тарик
22

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

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

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

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

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

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

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

Резюме:

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

Посмотрите, что можно и чего нельзя делать в HBase из блога cloudera .

Равиндра Бабу
источник
как насчет использования hbase в качестве datalake для очень больших объемов данных (небольших файлов)? может ли он управлять таким же объемом данных, как hdfs?
Mehdi TAZI
1
Если вы создаете много небольших файлов, то, в зависимости от шаблона доступа, может быть более подходящим другой тип хранилища. HBase хранит данные в MapFiles (индексированные файлы SequenceFiles) и является хорошим выбором, если вам нужно выполнять потоковую передачу в стиле MapReduce. анализ со случайным случайным поиском
Равиндра бабу
4

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

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

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

Правин Мулчандани
источник
4

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

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

Примечание:

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

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

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

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

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

  • Сервер региона - HBase
  • Узел данных - HDFS

Подчиненная машина

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

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

  • Стол

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

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

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

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

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

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

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

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

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

Что представляет собой мета-таблица на картинке выше?

мета таблица

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

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

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

  1. Модель данных HBase
  2. HBase Architecute
mrsrinivas
источник
1

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

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

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

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

Цзяцзи Ли
источник
0

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 хранит данные в виде столбцов, где каждый столбец хранится вместе, поэтому чтение становится быстрее за счет обработки в реальном времени.

введите описание изображения здесь

Гулам Дастджер
источник