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. |