HBase Advanced — архитектура и основной процесс и т. д.

Большие данные

Архитектура РЕГОНСЕРВЕРА

image.png

  • StoreFile

    • Физические файлы, которые сохраняют данные, StoreFiles хранятся в HDFS как HFiles, и каждое хранилище имеет один или несколько StoreFiles (HFiles).Данные в StoreFiles упорядочены и лексикографически упорядочены.
  • MenStore

    • Запись в память, поэтому записанные данные сначала будут храниться в MenStore.После сортировки они будут записаны в HDFS после запуска механизма сброса.Каждый сброс будет генерировать новый HFile.
  • WAL

    • До сброса MenStore данные находятся в памяти и могут быть утеряны.WAL решает эту проблему.Данные будут записываться сначала в файл лог-файла с опережающей записью, а затем в MenStore.При возникновении сбоя , файл журнала передается, данные могут быть восстановлены.
  • BlockCache

    • Чтение кеша.После завершения каждого запроса данные будут помещены в BlockCache для облегчения следующего запроса.

2. Напишите процесс

image.png

  • Клиент обращается к zookeeper и получает RegionServer, где находится таблица hbase:meta.
  • Получите доступ к соответствующему RegionServer, получите таблицу hbase:meta и запросите, в каком регионе и в каком RegionServer находятся целевые данные, в соответствии с namespace:table/rowkey запроса на чтение. Информация о регионе таблицы и информация о расположении метатаблицы кэшируются в метакеше клиента, чтобы облегчить следующий доступ.
  • Связь с целевым RegionServer, добавление данных.
  • Добавить данные в WAL.
  • Данные записываются в MenStore и сортируются в памяти.
  • Подождите до нужного времени, скажите MenStore, чтобы он перепрошился на HFile

3. Процесс чтения

image.png

  • Клиент обращается к zookeeper и получает RegionServer, где находится таблица hbase:meta.
  • Получите доступ к соответствующему RegionServer, получите таблицу hbase:meta и запросите, в каком регионе и в каком RegionServer находятся целевые данные, в соответствии с namespace:table/rowkey запроса на чтение. Информация о регионе таблицы и информация о расположении метатаблицы кэшируются в метакеше клиента, чтобы облегчить следующий доступ.
  • Связь с целевым RegionServer, запрос данных.
  • Найдите данные в BlockCache, MenCache, StoreFile и объедините найденные данные.
  • Кэшировать запрошенный новый блок данных (блок, единица хранения данных HFile, размер по умолчанию — 64 КБ) в кэш блоков.
  • Верните объединенный окончательный результат клиенту.

4. MemStore Flush

image.png

  • Когда размер хранилища памяти достигает hbase.hregion.memstore.flush.size (значение по умолчанию — 128 МБ), все хранилища памяти в этом регионе будут очищены.
  • Когда размер хранилища памяти достигает hbase.hregion.memstore.flush.size (значение по умолчанию 128M) hbase.hregion.memstore.block.multiplier (значение по умолчанию 4), это предотвратит запись данных в хранилище памяти.
  • Когда общий размер хранилища памяти на сервере региона достигает java_heapsize hbase.regionserver.global.memstore.size (по умолчанию 0,4) hbase.regionserver.global.memstore.size.lower.limit (по умолчанию 0,95), регион будет (от большого к меньшему) сбрасывается по очереди, пока общий размер всех мемсторов в регионе сервера не уменьшится ниже указанного выше значения. Когда общий размер хранилища памяти на сервере региона достигает размера java_heapsize hbase.regionserver.global.memstore.size (значение по умолчанию — 0,4), это предотвратит продолжение записи данных во все хранилища памяти.
  • Когда наступит время для автоматического сброса, также будет запущен сброс хранилища памяти. Интервал автоматической очистки настраивается свойством hbase.regionserver.Optionalcacheflushinterval (по умолчанию 1 час).
  • Когда количество файлов WAL превышает hbase.regionserver.max.logs, регионы будут очищаться в хронологическом порядке до тех пор, пока количество файлов WAL не уменьшится до уровня ниже hbase.regionserver.max.logs (это имя свойства было отменено, и теперь нет необходимости устанавливать его вручную, максимальное значение 32)

5.StoreFile Compaction

image.png

  • Поскольку memstore создает новый файл HFile каждый раз при его обновлении, а разные версии (отметка времени) и разные типы (вставка/удаление) одного и того же поля могут быть распределены в разных файлах HFile, при запросе необходимо просмотреть все файлы HFile. Чтобы уменьшить количество HFiles и очистить просроченные и удаленные данные, выполняется StoreFile Compression.
  • Существует два типа уплотнения: незначительное уплотнение и значительное уплотнение. Незначительное уплотнение объединит несколько смежных небольших файлов HFile в один большой файл HFile и очистит некоторые просроченные и удаленные данные. Major Compaction объединит все HFiles в Store в один большой HFile и очистит все просроченные и удаленные данные.

6.Region Split

image.png

По умолчанию каждая таблица изначально имеет только один регион, и поскольку данные записываются непрерывно, регион будет автоматически разделен. При разделении оба субрегиона располагаются на текущем сервере регионов, но из-за соображений балансировки нагрузки HMaster может передать регион другим серверам регионов.

Время разделения регионов:

  • Когда общий размер всех StoreFiles в Store в регионе превышает hbase.hregion.max.filesize, регион будет разделен (до версии 0.94).
  • Когда общий размер всех StoreFiles в Store в регионе превышает Min(initialSizeR ^ 3, hbase.hregion.max.filesize "), регион будет разделен. Значение по умолчанию инициальному составляет 2hbase.hregion.memstore.flush.size, R — количество Регионов, принадлежащих этой Таблице на текущем Сервере Регионов (после версии 0.94).
    Конкретная стратегия сегментации:
    Первое разделение: 1^3 * 256 = 256 МБ
    Второе разделение: 2^3 * 256 = 2048 МБ
    Третье разделение: 3^3 * 256 = 6912 МБ
    Четвертое разделение: 4 ^ 3 * 256 = 16384 МБ > 10 ГБ, поэтому возьмите меньшее значение 10 ГБ.
    Размер каждого последующего сплита составляет 10 ГБ.
  • HBASE 2.0 представляет новую расщепленную стратегию: если нынешний р-н-регион на столе имеет только один регион, согласно 2 * HBASE.hregion.memstore.flush.size Split, в противном случае в соответствии с HBASE.hregion.max.filesize Division.

HBase Другие статьи

Использование HBase Api DML и DDL