HBase — это высоконадежная, высокопроизводительная, столбцово-ориентированная, масштабируемая, распределенная база данных NOSQL для чтения и записи в реальном времени.
Используйте Apache HBase, когда вам нужен произвольный доступ для чтения и записи к большим данным в режиме реального времени.
эффект:В основном используется для хранения неструктурированных、Полуструктурированные и структурированные из свободных данных (столбцовое хранилище из данных базы NoSQL)
Объяснение имени:
Логически модель данных HBase очень похожа на реляционную базу данных. Данные хранятся в таблице со строками и столбцами. Но с точки зрения базовой физической структуры хранения (ключ-значение) HBase больше похож на карту.
Логическая структура HBase следующая:
Физическая структура хранения HBase
1) Содержит интерфейс для доступа к HBase для доступа к HBase 2) Клиент получает информацию о кластере HBase, запрашивая информацию в Zookeeper.
1) Убедитесь, что в кластере всегда есть только один мастер. 2) Сохраните записи адресации всех регионов. 3) Отслеживайте онлайн- и оффлайн-информацию RegionServer в режиме реального времени и уведомляйте HMaster в режиме реального времени. 4) Сохраните схему HBase и метаданные таблицы.
1) Назначьте регион RegionServer 2) Отвечает за балансировку нагрузки RegionServer. 3) Обнаружьте неисправный RegionServer и перераспределите на нем регионы. 4) Управляйте операциями пользователей по добавлению, удалению и изменению таблиц.
1) RegionServer поддерживает регионы и обрабатывает запросы ввода-вывода к этим регионам. 2) RegionServer отвечает за разделение Региона, который в процессе работы становится слишком большим.
1) Файл HLog — это обычный файл последовательности Hadoop. Ключ файла последовательности — это объект HLogKey. HLogKey записывает информацию о владельце записанных данных. Помимо имен таблиц и регионов, он также включает порядковый номер и. timestamp. Временная метка — «запись «Введите время», начальное значение порядкового номера — 0 или последний порядковый номер, сохраненный в файловой системе. 2) Значением HLog SequenceFile является объект KeyValue HBase, который соответствует KeyValue в HFile.
1) HBase автоматически делит таблицу на несколько регионов (регионов) по горизонтали. Каждый регион сохраняет в таблице определенный фрагмент непрерывных данных. Каждая таблица имеет только один регион в начале. Поскольку данные в таблицу непрерывно вставляются, это регион. продолжает расти, когда он достигнет порога, Регион будет разделен на два новых Региона (деление). 2) По мере увеличения строк в таблице Регионов будет все больше и больше. Такая полная таблица сохраняется на нескольких серверах региона.
1) Регион состоит из нескольких магазинов, и один магазин соответствует одному CF (семейству столбцов) 2) Store включает в себя memstore, расположенный в памяти, и storefile, расположенный на диске. Операция записи сначала записывается в Memstore. Когда данные в Memstore достигают определенного порога, HRegionserver запускает процесс flashcache для записи в файл хранилища. Каждая запись формирует отдельный файл хранилища. 3) StoreFile доступен только для чтения и не может быть изменен после создания. Таким образом, обновление Hbase на самом деле представляет собой непрерывную операцию добавления. Когда количество файлов Storefile в Магазине увеличивается до определенного порога, система объединяется (незначительное, крупное сжатие). В процессе слияния будет выполняться объединение и удаление версий (majar), а также будут вноситься изменения в один и тот же ключ. объединены вместе, образуя больший файл хранилища. 4) Когда сумма размеров всех файлов хранилища в регионе превышает определенный порог, текущий регион будет разделен на два и распределен hmaster на соответствующий сервер региона для достижения балансировки нагрузки. 5) Когда клиент получает данные, он сначала ищет их в хранилище памяти, а затем ищет файл хранилища, если не может его найти. 6) HRegion — наименьшая единица распределенного хранилища и балансировки нагрузки в HBase. Наименьшая единица означает, что разные HRegions могут быть распределены на разных серверах HRegionServer. 7) HRegion состоит из одного или нескольких магазинов, в каждом магазине хранится семейство столбцов. 8) Каждое хранилище состоит из memStore и от 0 до нескольких StoreFiles.
1. Клиент отправляет запрос на получение адреса HMaster и адреса RegionServer, где находится метатаблица, от Zookeeper, а также отправляет запрос на запись данных на HRegionServer.
2. Данные записываются в MemStore HRegion, а также в HLog.
3. Данные из MemStore сбрасываются в StoreFile.
4. Когда MemStore достигает порогового значения, данные сбрасываются в файл хранилища. Когда несколько файлов StoreFile достигают определенного размера, запускается операция компактного слияния. После сжатия постепенно формируется все больший и больший файл хранилища.
5. После того, как размер StoreFile превысит определенный порог, запускается операция разделения, которая разделяет текущий HRegion на 2 новых HRegion. Родительский HRegion будет отключен, а 2 дочерних HRegion из нового разделения будут выделены соответствующему HRegionServer. HMaster, чтобы исходное 1 Давление одного HRegion можно было распределить на два HRegion.
6. Если данные в MemStore утеряны, их можно восстановить из HLog.
1. Клиент сначала находит местоположение региона метатаблицы у Zookeeper, а затем считывает данные в метатаблице. Мета хранит информацию о регионе пользовательской таблицы.
2. Найдите информацию о регионе, для которого записаны данные, согласно данным в метатаблице на основе пространства имен, имени таблицы и ключа строки.
3. Найдите соответствующий RegionServer, найдите соответствующий Region, сначала найдите данные из Memstore, а если нет, прочтите данные из StoreFile.
Когда клиент записывает данные в HBase, они сначала записываются в HLog и Memstore. В хранилище, когда память Memstore заполнена, данные будут записаны на диск для формирования нового файла хранения данных (StoreFile With the memstore). При перепрошивке будет создано множество файлов хранилища. Когда файлы хранилища в хранилище достигнут определенного порога, изменения одного и того же ключа будут объединены в один большой файл хранилища. Наконец, когда размер файла хранилища достигнет определенного порога. , файл хранилища будет разделен на два файла хранилища.
Поскольку обновления в таблицу постоянно добавляются, при слиянии вам необходимо получить доступ ко всем файлам хранилища и хранилищам памяти в хранилище и объединить их по ключам строк. Поскольку файлы хранилища и хранилища памяти сортируются, а файлы хранилища имеют индексы в памяти, процесс слияния. относительно быстро.
Поскольку файл хранилища не может быть изменен, HBase не может просто удалить данные, удалив определенный ключ/значение. Вместо этого он ставит метку удаления на удаленные данные, чтобы указать, что данные были удалены. Во время процесса извлечения метка удаления закрывается. данные, клиент не может прочитать данные.
По мере того как данные в memstore продолжают записываться на диск, будут создаваться все новые и новые файлы storeFile, HBase внутренне решает эту проблему с небольшими файлами, объединяя несколько файлов в один файл большего размера. следует:
незначительное слияние
Незначительное слияние отвечает за объединение нескольких файлов StoreFile в Магазине. Когда количество файлов StoreFile достигает значения hbase.hstore.compaction.min (значение по умолчанию — 3), они будут объединены в один большой файл StoreFile. При таком слиянии несколько небольших файлов в основном перезаписываются в меньшее количество больших файлов, чтобы уменьшить количество хранимых файлов. Поскольку каждый файл в StoreFile классифицируется, скорость слияния очень высокая и в основном зависит от производительности дискового ввода-вывода.
крупное слияние
Перезапишите несколько небольших объединенных больших файлов StoreFile кластера столбцов (соответствующего Store) в регионе в новый StoreFile. Более того, основное слияние может сканировать все пары ключ/значение и перезаписывать все данные последовательно. В процессе перезаписи данные, помеченные для удаления, будут пропущены.
Таблица каталога hbase:meta существует как таблица HBase и отфильтровывается из команд списка оболочки hbase (аналогично показу таблиц), но на самом деле это таблица, подобная любой другой таблице.
Таблица hbase:meta (ранее .META.) содержит список всех регионов в системе. Информация о местоположении hbase:meta хранится в Zookeeper, hbase:meta представляет собой точку входа для всех запросов.
Структура таблицы следующая:
key:
регионизключ, структура следующая: [таблица],[регион start key,end key],[region id]
values:
info:regioninfo (сериализация текущего региона из экземпляра HRegionInfo)
info:server (содержит текущий регионизRegionServerизserver:port)
info:serverstartcode (содержит текущий регион, процесс RegionServer, время запуска)
Во время разделения таблицы создаются два дополнительных столбца с именами info:splitA и info:splitB, которые представляют два дочерних региона, и значения этих столбцов также являются сериализованными экземплярами HRegionInfo. Эта строка будет удалена после разделения региона.
a,,endkey
a,startkey,endkey
a,startkey,
Пустой ключ используется для обозначения начала и конца таблицы. Регион с нулевым начальным ключом является первым регионом в таблице. Если регион имеет как нулевой начальный, так и нулевой конечный ключ, это единственный регион в таблице.
HBase подходит для сценариев, требующих обработки огромных объемов данных и требующих высокой надежности и производительности. Например:
В целом HBase — это высокопроизводительная, высоконадежная и масштабируемая распределенная база данных, которая подходит для обработки огромных объемов неструктурированных или структурированных данных и может отвечать требованиям управления чтением и записью практически в реальном времени.