HBase - Обзор

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

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

Ограничения Hadoop

Hadoop может выполнять только пакетную обработку, и доступ к данным будет осуществляться только последовательно. Это означает, что нужно искать во всем наборе данных даже самые простые задания.

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

Базы данных произвольного доступа Hadoop

Такие приложения, как HBase, Cassandra, couchDB, Dynamo и MongoDB, - это некоторые из баз данных, которые хранят огромные объемы данных и получают доступ к ним случайным образом.

Что такое HBase?

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

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

Это часть экосистемы Hadoop, которая обеспечивает произвольный доступ для чтения / записи в реальном времени к данным в файловой системе Hadoop.

Хранить данные в HDFS можно напрямую или через HBase. Потребитель данных читает / обращается к данным в HDFS случайным образом с помощью HBase. HBase находится поверх файловой системы Hadoop и обеспечивает доступ для чтения и записи.

HBase и HDFS

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

Механизм хранения в HBase

HBase - это column-oriented databaseи таблицы в нем отсортированы по строкам. Схема таблицы определяет только семейства столбцов, которые представляют собой пары ключ-значение. В таблице есть несколько семейств столбцов, и каждое семейство столбцов может иметь любое количество столбцов. Последующие значения столбцов хранятся на диске непрерывно. Каждое значение ячейки таблицы имеет отметку времени. Короче говоря, в HBase:

  • Таблица - это набор строк.
  • Строка - это набор семейств столбцов.
  • Семейство столбцов - это набор столбцов.
  • Столбец - это набор пар ключ-значение.

Ниже приведен пример схемы таблицы в HBase.

Rowid Семейство столбцов Семейство столбцов Семейство столбцов Семейство столбцов
col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
1
2
3

Ориентировано по столбцам и по строкам

Столбцовые базы данных - это базы данных, в которых таблицы данных хранятся как разделы столбцов данных, а не как строки данных. Вскоре у них появятся семейства столбцов.

Строковая база данных Колонно-ориентированная база данных
Он подходит для онлайн-транзакций (OLTP). Он подходит для онлайн-аналитической обработки (OLAP).
Такие базы данных рассчитаны на небольшое количество строк и столбцов. Колоночные базы данных предназначены для огромных таблиц.

На следующем изображении показаны семейства столбцов в базе данных, ориентированной на столбцы:

HBase и СУБД

HBase СУБД
HBase не имеет схемы и концепции фиксированных столбцов; определяет только семейства столбцов. РСУБД управляется своей схемой, которая описывает всю структуру таблиц.
Он создан для широких столов. HBase масштабируется по горизонтали. Он тонкий и предназначен для небольших столов. Трудно масштабировать.
В HBase нет транзакций. СУБД транзакционная.
Это ненормализованные данные. В нем будут нормализованные данные.
Он хорош как для полуструктурированных, так и для структурированных данных. Это хорошо для структурированных данных.

Особенности HBase

  • HBase линейно масштабируется.
  • Имеет автоматическую поддержку отказа.
  • Он обеспечивает согласованное чтение и запись.
  • Он интегрируется с Hadoop как в качестве источника, так и в качестве пункта назначения.
  • Он имеет простой Java API для клиента.
  • Он обеспечивает репликацию данных между кластерами.

Где использовать HBase

  • Apache HBase используется для произвольного доступа для чтения / записи в режиме реального времени к большим данным.

  • Он размещает очень большие таблицы поверх кластеров стандартного оборудования.

  • Apache HBase - это нереляционная база данных, созданная по образцу Bigtable от Google. Bigtable работает с файловой системой Google, аналогично Apache HBase работает поверх Hadoop и HDFS.

Применение HBase

  • Он используется всякий раз, когда нужно писать тяжелые приложения.
  • HBase используется всякий раз, когда нам нужно обеспечить быстрый произвольный доступ к имеющимся данным.
  • Такие компании, как Facebook, Twitter, Yahoo и Adobe, используют HBase для внутренних целей.

История HBase

Год Событие
Ноя 2006 Google выпустил статью о BigTable.
Февраль 2007 г. Первоначальный прототип HBase был создан как вклад Hadoop.
Октябрь 2007 г. Выпущен первый пригодный для использования HBase вместе с Hadoop 0.15.0.
Январь 2008 г. HBase стал подпроектом Hadoop.
Октябрь 2008 г. Был выпущен HBase 0.18.1.
Январь 2009 г. Выпущен HBase 0.19.0.
Сентябрь 2009 г. Выпущен HBase 0.20.0.
Май 2010 г. HBase стал проектом верхнего уровня Apache.