И 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 предназначен для поиска, касающегося этих объектов.
- Сначала сканер ищет ячейки строк в кэше блоков - кэше чтения. Здесь кэшируются недавно прочитанные ключевые значения, а при необходимости памяти удаляются наименее недавно использованные.
- Затем сканер просматривает MemStore , кэш записи в памяти, содержащий самые последние записи.
- Если сканер не находит все ячейки строк в MemStore и Block Cache, то HBase будет использовать индексы Block Cache и фильтры bloom для загрузки HFiles в память, которая может содержать целевые ячейки строки.
источники и дополнительная информация:
- Модель данных HBase
- HBase Architecute