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


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

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

Pls чувствуют свободными исправить меня.

спасибо.

5 115

5 ответов:

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

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

Hadoop

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

HBase

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

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

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

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

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

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

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

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

но HBase имеет некоторые ограничения

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

резюме:

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

посмотрите на Do и не HBase от cloudera блог.

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

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

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

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

Both HBase and HDFS in one picture

Примечание:

Проверьте демонов HDFS (выделено зеленым цветом), как DataNode (collocated Region Servers) и NameNode в кластере с HBase и Hadoop HDFS

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

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

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

ну, на уровне инфраструктуры, каждая машина salve в кластере имеет вслед за демонами

  • Region Server-HBase
  • узел данных-HDFS

Slave machine

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

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

  • таблица

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

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

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

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

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

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

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

    Client read request flow

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

    meta table

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

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

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

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

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

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

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

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