Как обрабатывать сжатие HDInsight Hbase Major? Hbase недоступен при сильном уплотнении

У нас установлен кластер HDInsight Hbase, и мы наблюдаем, что, хотя происходит значительное сжатие, Hbase становится недоступным для клиентских приложений.

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


person Bhash    schedule 19.05.2016    source источник


Ответы (2)


Что касается HDInsight HBase, я хотел бы поделиться здесь некоторыми идеями.

1) Уплотнение по времени отключено глухим, см. hbase.hregion.majorcompaction=0

2) Что касается уплотнения на основе размера, политика уплотнения по умолчанию - ExploringCompactionPolicy, а hbase.hstore.compaction.max.size - 10 ГБ, поэтому уплотнения не будут превышать 10 ГБ.

hbase.hregion.max.filesize установлен на 3 ГБ, поэтому, как только HFiles региона превысит это значение, регион будет разделен. Причина таких настроек заключается в том, что максимальный размер большого двоичного объекта, который HBase может создать в хранилище Azure, составляет до 12 ГБ, поэтому при сжатии данных более 12 ГБ сжатие окончательно завершится ошибкой. Вы можете определенно увеличить максимальный размер большого двоичного объекта (до 200 ГБ на каждое задокументированное хранилище Azure, но это также увеличит задержку чтения / записи и время сжатия).

Больше контекста здесь,

Хотя в хранилище BLOB-объектов Azure есть ограничение на 200 ГБ для одного большого двоичного объекта (блоки 4 МБ * 50 КБ), но для достижения максимальной производительности в hadoop core-site.xml мы ограничиваем fs.azure.read.request.size и fs.azure.write.request.size до 256 КБ, таким образом, максимальный размер большого двоичного объекта в кластере HBase будет 256 КБ * 50 КБ. около 12 ГБ. если вы установите 4 МБ, то будет 200 ГБ. Но 4 МБ увеличит задержку каждого чтения / записи, и вы позволите HBase сжимать до 200 ГБ данных, которых хватит на несколько часов.

3) Существенное уплотнение стоит дорого, особенно для облачного HBase. Потому что задержка выше, чем у локального диска / SSD. Для повышения производительности чтения вы можете настроить сегментный кеш, подключенный к локальному SSD-накопителю виртуальной машины, который должен быть включен по умолчанию в последнем кластере HDInsight HBase.

Определенно можно сделать больше настроек, таких как размер виртуальной машины, размер кластера, размер Memstore и т. Д.

person onpduo    schedule 01.08.2016

Это зависит от вашего варианта использования.

По умолчанию основное уплотнение выполняется каждые 24 часа.

Если вы знаете, что ваш кластер не используется, вы можете отключить основное сжатие и запустить его в это время (обычно ночью). Сценарий, вызываемый cron, который запускает основное сжатие с помощью оболочки hbase, может выполнить эту работу.

Начиная с HBase 0.98.11 и HBase 1.1.0, вы можете ограничить производительность уплотнения, дополнительную информацию можно найти на Ограничение скорости уплотнения JIRA.

Важно запустить серьезное сжатие, потому что оно улучшает доступ к диску HBase за счет слияния StoreFile (удаление удаленных данных на диске, сортировка данных по ключу строки, ...)

hbase-site.xml:

<!-- Disable major compaction -->
<property> 
  <name>hbase.hregion.majorcompaction</name> 
  <value>0</value> 
</property>

Выполните основное уплотнение вручную:

# Launch major compaction on all regions of table t1
$ echo "major_compact 't1'" | hbase shell
# Launch major compaction on region r1 
$ major_compact 'r1' 
person Azwaw    schedule 19.05.2016