Графическое и текстовое объяснение процесса чтения и записи HBase.

HBase

Я уже третий день участвую в августовском челлендже, подробности события Посмотреть:Испытание августовского обновления

Пожалуйста, поймите эту статью в сочетании с этим моим блогом:Статья для понимания внутренностей HBase

операция записи

HBase используетДревовидная архитектура LSM, который, естественно, подходит для сценариев приложений с большим количеством операций записи и меньшим объемом чтения.

В реальной производственной среде именно благодаря отличным возможностям записи кластера HBase он может поддерживать многие предприятия при резком увеличении объема данных.

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

такПроцесс обновления и удаления в HBase точно такой же, как и процесс записи.

Конечно, весь процесс записи данных HBase постоянно оптимизируется с итерацией версии, но в целом процесс не сильно изменился.

3 этапа

С точки зрения общей архитектуры процесс написания можно разделить на три этапа.

  1. Этап обработки клиента: клиент предварительно обрабатывает запрос пользователя на запись, находит RegionServer, на котором находятся данные записи, в соответствии с метаданными кластера, и отправляет запрос на соответствующий RegionServer.
  2. Фаза записи региона: после того, как сервер RegionServer получит запрос на запись, он анализирует данные, сначала записывает их в WAL, а затем записывает в MemStore соответствующего семейства столбцов Region.
  3. Этап сброса MemStore: когда емкость MemStore в регионе превышает определенный порог, система асинхронно выполняет операцию сброса, чтобы записать данные из памяти в файл для формирования HFile.

6 шагов

在这里插入图片描述

  1. Сначала найдите местоположение региона таблицы hbase:meta в ZooKeeper, а затем прочитайте данные в таблице hbase:meta, в которой хранится информация о регионе пользовательской таблицы.
  2. Найдите информацию о регионе, соответствующую записанным данным, в соответствии с пространством имен, именем таблицы и информацией о строке.
  3. Найдите RegionServer, соответствующий этому региону, и отправьте запрос
  4. Запись данных в HLog ( WriteAheadLog ) и MemStore соответственно
  5. После того, как MemStore достигает порогового значения, данные сбрасываются на диск и создается файл StoreFile.
  6. Удалить исторические данные в HLog.

операция чтения

По сравнению с процессом записи процесс чтения данных в HBase более сложен.

В основном по двум причинам:

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

Очевидно, что эта идея реализации значительно упрощает процесс обновления и удаления данных, но для чтения данных это означает слои оков:Процесс чтения нужно фильтровать по версии, и данные, помеченные на удаление, тоже фильтровать.

4 этапа

Процесс чтения можно разделить на следующие 4 этапа от начала до конца:

  1. Клиент-Сервер считывает логику взаимодействия
  2. Платформа сканирования на стороне сервера
  3. Отфильтровать HFiles, которые не соответствуют условиям запроса
  4. Чтение ключа для поиска из HFile

Логика взаимодействия клиент-сервер в основном представленаКак клиент HBase взаимодействует с сервером в течение всего процесса запроса на сканирование, понимание этого важно для чтения данных с помощью Hbase Scan API.

Понять систему инфраструктуры сканирования на стороне сервера и представить ее с точки зрения макросов.Как HbaseRegionServer обрабатывает запрос на сканирование шаг за шагом.

6 шагов

在这里插入图片描述

  1. Сначала найдите местоположение региона метатаблицы из ZooKeeper, а затем прочитайте данные в таблице hbase:meta, в которой хранится информация о регионе пользовательской таблицы.
  2. В соответствии с запрашиваемым пространством имен, именем таблицы и ключом строки найдите информацию о регионе, соответствующую записанным данным.
  3. Найдите RegionServer, соответствующий этому региону, и отправьте запрос
  4. Найдите соответствующий регион
  5. Сначала найдите данные из MemStore, если нет, прочитайте из BlockCache.

Память RegionServer на HBase разделена на две части: одна часть используется как MemStore, которая в основном используется для записи;

Другая часть, как BlockCache, в основном используется для чтения данных;

  1. Если он не найден в BlockCache, перейдите в StoreFile(HFile), чтобы прочитать

После чтения данных из StoreFile вместо того, чтобы возвращать данные результата непосредственно клиенту, данные сначала записываются в BlockCache, чтобы ускорить последующие запросы, а затем результаты возвращаются клиенту.