#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
. Я не уверен, что это может быть лучшим подходом, поскольку это связано с накладными расходами на управление всякий раз, когда мы создаем новые таблицы и т.д.