Можно ли использовать типы / политики хранения HDFS вместе с HBase?

#hadoop #hdfs #hbase

#hadoop #hdfs #hbase

Вопрос:

В HDFS есть функция, называемая типами / политиками хранения — она позволяет хранить файлы в хранилищах с различными свойствами (быстрый SSD или медленное, но дешевое архивное хранилище).

Интересно, можно ли использовать эту функцию через HBase?

Мой вариант использования заключается в том, что у меня есть некоторые «горячие» данные, к которым, как ожидается, будут часто обращаться, поэтому я хочу поместить их в «горячее» (SSD) хранилище, а некоторые данные «холодные» и к ним обращаются нечасто, поэтому я хочу поместить их в более дешевое хранилище. И я пытаюсь выяснить, как организовать это с помощью HBase / HDFS.

Ответ №1:

Я вижу, что политика хранения позволяет вам указать политику для файла или каталога, и они применяются в соответствии с определенными правилами.

Мы должны помнить, что при установке HBase мы указываем каталог HDFS, в котором хранятся данные, например:

 <property>
   <name>hbase.rootdir</name>
   <value>hdfs://localhost:8030/hbase</value>
</property>
 

Итак, /hbase это каталог HDFS, в котором вы можете указать политики. Мы знаем, что структура каталогов HBSE будет выглядеть примерно так:

 hdfs://hbase/data/MyFirstNamespace/MyTable1
hdfs://hbase/data/MyFirstNamespace/MyTable2
 

Поэтому я бы настроил политику хранения на уровне каталога в HDFS, например, Cold для MyTable1 и All_SSD для MyTable2:

 hdfs storagepolicies -setStoragePolicy -path /hbase/data/MyFirstNamespace/MyTable1 -policy Cold
hdfs storagepolicies -setStoragePolicy -path /hbase/data/MyFirstNamespace/MyTable2 -policy All_SSD
 

Это необходимо сделать после создания новой таблицы HBase.

Ответ №2:

Данные HBase хранятся в HDFS (если HDFS является целевым хранилищем) по пути, настроенному с помощью свойства hbase.rootdir . Вы можете найти его значение из hbase-site.xml . Затем вы можете применить политику хранения HDFS к этому пути к HDFS.

Комментарии:

1. Можно ли как-то использовать разные политики для разных таблиц?

2. Насколько я знаю, вы не можете применить эту политику из любого интерфейса HBase. IIRC, вы можете найти конкретные каталоги для каждой таблицы под ${hbase.rootdir}/data или ${hbase.rootdir}/data/default с именем таблиц. Вы можете индивидуально выбирать эти каталоги хранения файлов таблиц и применять соответствующую политику хранения вместо применения к родительской папке hbase.rootdir . Я не уверен, что это может быть лучшим подходом, поскольку это связано с накладными расходами на управление всякий раз, когда мы создаем новые таблицы и т.д.