Поделиться через


Оптимизация Apache HBase с помощью Apache Ambari в Azure HDInsight

Apache Ambari — это веб-интерфейс для управления кластерами HDInsight и их мониторинга. Основные сведения о пользовательском веб-интерфейсе Ambari см. в статье Управление кластерами HDInsight с помощью пользовательского веб-интерфейса Apache Ambari.

Изменить конфигурацию HBase можно на вкладке HBase Configs (Конфигурации HBase). В следующих разделах описаны некоторые важные настройки, которые влияют на производительность HBase.

Настройка параметра HBASE_HEAPSIZE

Примечание.

В этой статье упоминается термин master (главный). Корпорация Майкрософт больше не использует этот термин. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.

Размер кучи HBase определяет максимальный объем кучи в мегабайтах для сервера региона и главного сервера. Значение по умолчанию — 1000 МБ. Это значение должно быть настроено в соответствии с рабочей нагрузкой кластера.

  1. Чтобы изменить этот параметр, перейдите в область Advanced HBase-env (Дополнительные параметры среды HBase) на вкладке Configs (Конфигурации) HBase, а затем найдите параметр HBASE_HEAPSIZE.

  2. Измените значение по умолчанию на 5000 МБ.

    `Apache Ambari HBase memory heapsize`.

Оптимизация рабочих нагрузок с интенсивными операциями чтения

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

Размер кэша блоков

Кэш блоков является кэшем чтения. Параметр hfile.block.cache.size управляет размером блока кэша. Его значение по умолчанию — 0,4. Это означает 40 % от общего объема памяти сервера региона. Чем больше размер кэша блоков, тем быстрее будут выполняться случайные операции чтения.

  1. Чтобы изменить этот параметр, перейдите на вкладку Settings (Параметры) на вкладке Configs (Конфигурации) HBase, а затем найдите параметр % of RegionServer Allocated to Read Buffers (% памяти сервера региона, выделяемой для буферов чтения).

    Apache HBase memory block cache size.

  2. Чтобы изменить значение, щелкните значок Edit (Изменить).

Размер Memstore

Все изменения сохраняются в буфере памяти, который называется Memstore. Этот буфер увеличивает общий объем данных, который можно записать на диск за одну операцию. Он также ускоряет доступ к последним изменениям. Размер Memstore определяет следующие два параметра:

  • hbase.regionserver.global.memstore.UpperLimit: определяет максимальный процент памяти сервера региона, доступной для объединенного буфера Memstore;

  • hbase.regionserver.global.memstore.LowerLimit: определяет минимальный процент памяти сервера региона, доступной для объединенного буфера Memstore.

Чтобы оптимизировать операции произвольного чтения, можно уменьшить максимальный и минимальный размеры Memstore.

Число получаемых строк при проверке данных на диске

Параметр hbase.client.scanner.caching определяет количество строк, считываемых с диска, когда для сканера вызывается метод next. Значение по умолчанию — 100. Чем больше значение этого параметра, тем меньше удаленных вызовов выполняется от клиента к серверу региона, что позволяет ускорить проверку. Однако этот параметр повышает нагрузку на память клиента.

Apache HBase number of rows fetched.

Внимание

Не задавайте значение таким образом, чтобы время между вызовом следующего метода для сканера превышало время ожидания сканера. Время ожидания сканера определяет свойство hbase.regionserver.lease.period.

Оптимизация рабочих нагрузок с интенсивными операциями записи

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

Максимальный размер файла для региона

HBase хранит данные во внутреннем формате файла, который называется HFile. Свойство hbase.hregion.max.filesize определяет размер одного HFile региона. Регион разделен на два региона, если сумма всех HFiles в регионе больше, чем этот параметр.

`Apache HBase HRegion max filesize`.

Чем больше размер файла для региона, тем меньше число разделений. Можно увеличить размер файла, чтобы определить значение, обеспечивающее максимальную производительность записи.

Избегание блокировки обновлений

  • Свойство hbase.hregion.memstore.flush.size определяет размер, по достижении которого содержимое Memstore освобождается на диск. Его значение по умолчанию составляет 128 МБ.

  • Определяет hbase.hregion.memstore.block.multiplier умножение блока области HBase. Значение по умолчанию — 4. Максимально допустимое значение равно 8.

  • HBase блокирует обновления, если Memstore содержит (hbase.hregion.memstore.flush.size * hbase.hregion.memstore.block.multiplier) байтов.

    При значениях размера освобождения и множителя блокирования по умолчанию обновления блокируются, когда размер Memstore составляет 128 * 4 = 512 МБ. Чтобы уменьшить количество блокируемых обновлений, увеличьте значение hbase.hregion.memstore.block.multiplier.

Apache HBase Region Block Multiplier.

Определение размера Memstore

hbase.regionserver.global.memstore.lowerLimit Параметры hbase.regionserver.global.memstore.upperLimit определяют размер Memstore. Если задать для них одинаковое значение, это уменьшит паузы между операциям записи (а также приведет к более частому сбросу данных на диск) и повысит производительность записи.

Настройка локального буфера выделения Memstore

hbase.hregion.memstore.mslab.enabled Свойство определяет использование локального буфера выделения Memstore. Если эта функция включена (параметр имеет значение true), она предотвращает фрагментацию кучи во время операций записи большого объема данных. Значение по умолчанию — true.

hbase.hregion.memstore.mslab.enabled.

Следующие шаги