Оптимизация Apache HBase с помощью Apache Ambari в Azure HDInsight
Apache Ambari — это веб-интерфейс для управления кластерами HDInsight и их мониторинга. Основные сведения о пользовательском веб-интерфейсе Ambari см. в статье Управление кластерами HDInsight с помощью пользовательского веб-интерфейса Apache Ambari.
Изменить конфигурацию HBase можно на вкладке HBase Configs (Конфигурации HBase). В следующих разделах описаны некоторые важные настройки, которые влияют на производительность HBase.
Настройка параметра HBASE_HEAPSIZE
Примечание.
В этой статье упоминается термин master (главный). Корпорация Майкрософт больше не использует этот термин. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.
Размер кучи HBase определяет максимальный объем кучи в мегабайтах для сервера региона и главного сервера. Значение по умолчанию — 1000 МБ. Это значение должно быть настроено в соответствии с рабочей нагрузкой кластера.
Чтобы изменить этот параметр, перейдите в область Advanced HBase-env (Дополнительные параметры среды HBase) на вкладке Configs (Конфигурации) HBase, а затем найдите параметр
HBASE_HEAPSIZE
.Измените значение по умолчанию на 5000 МБ.
Оптимизация рабочих нагрузок с интенсивными операциями чтения
Приведенные ниже настройки важны для повышения производительности рабочих нагрузок с интенсивными операциями чтения.
Размер кэша блоков
Кэш блоков является кэшем чтения. Параметр hfile.block.cache.size
управляет размером блока кэша. Его значение по умолчанию — 0,4. Это означает 40 % от общего объема памяти сервера региона. Чем больше размер кэша блоков, тем быстрее будут выполняться случайные операции чтения.
Чтобы изменить этот параметр, перейдите на вкладку Settings (Параметры) на вкладке Configs (Конфигурации) HBase, а затем найдите параметр % of RegionServer Allocated to Read Buffers (% памяти сервера региона, выделяемой для буферов чтения).
Чтобы изменить значение, щелкните значок Edit (Изменить).
Размер Memstore
Все изменения сохраняются в буфере памяти, который называется Memstore. Этот буфер увеличивает общий объем данных, который можно записать на диск за одну операцию. Он также ускоряет доступ к последним изменениям. Размер Memstore определяет следующие два параметра:
hbase.regionserver.global.memstore.UpperLimit
: определяет максимальный процент памяти сервера региона, доступной для объединенного буфера Memstore;hbase.regionserver.global.memstore.LowerLimit
: определяет минимальный процент памяти сервера региона, доступной для объединенного буфера Memstore.
Чтобы оптимизировать операции произвольного чтения, можно уменьшить максимальный и минимальный размеры Memstore.
Число получаемых строк при проверке данных на диске
Параметр hbase.client.scanner.caching
определяет количество строк, считываемых с диска, когда для сканера вызывается метод next
. Значение по умолчанию — 100. Чем больше значение этого параметра, тем меньше удаленных вызовов выполняется от клиента к серверу региона, что позволяет ускорить проверку. Однако этот параметр повышает нагрузку на память клиента.
Внимание
Не задавайте значение таким образом, чтобы время между вызовом следующего метода для сканера превышало время ожидания сканера. Время ожидания сканера определяет свойство hbase.regionserver.lease.period
.
Оптимизация рабочих нагрузок с интенсивными операциями записи
Приведенные ниже настройки важны для повышения производительности рабочих нагрузок с интенсивными операциями записи.
Максимальный размер файла для региона
HBase хранит данные во внутреннем формате файла, который называется HFile
. Свойство hbase.hregion.max.filesize
определяет размер одного HFile
региона. Регион разделен на два региона, если сумма всех HFiles
в регионе больше, чем этот параметр.
Чем больше размер файла для региона, тем меньше число разделений. Можно увеличить размер файла, чтобы определить значение, обеспечивающее максимальную производительность записи.
Избегание блокировки обновлений
Свойство
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
.
Определение размера Memstore
hbase.regionserver.global.memstore.lowerLimit
Параметры hbase.regionserver.global.memstore.upperLimit
определяют размер Memstore. Если задать для них одинаковое значение, это уменьшит паузы между операциям записи (а также приведет к более частому сбросу данных на диск) и повысит производительность записи.
Настройка локального буфера выделения Memstore
hbase.hregion.memstore.mslab.enabled
Свойство определяет использование локального буфера выделения Memstore. Если эта функция включена (параметр имеет значение true), она предотвращает фрагментацию кучи во время операций записи большого объема данных. Значение по умолчанию — true.