Недостатки наличия большего количества семейств столбцов в hbase?

Я читал, что в hbase у меня не должно быть более 2-3 семейств столбцов в таблице. Я знаю, что для извлечения записей из каждого семейства столбцов в строке мне нужно выполнить отдельное сканирование, но все же я не понимаю, в чем будет проблема, если у меня будет больше семейств столбцов. ?

В моем случае я хочу хранить 20 изображений размером около 10 КБ каждое в hbase, имеющих разные размеры (m x n). Итак, обычно приходит запрос на получение определенного измерения, и мне нужно обслужить это изображение. Поэтому, если я помещу все эти изображения в одно семейство столбцов, все 20 изображений разного размера будут без необходимости загружаться в память для кэширования (если запрос снова придет для того же изображения, он обязательно придет для того же размер). С другой стороны, если я оставлю 20 семейств столбцов (по одному для каждого измерения), в ОЗУ для кэширования будет загружено только необходимое изображение.


person Harsh Sharma    schedule 25.02.2015    source источник


Ответы (1)


Я бы предложил попытаться сохранить разные измерения в разных столбцах в одной строке, и всякий раз, когда есть запрос на конкретное измерение, вы получаете добавление только необходимого столбца измерения. Поскольку HBase кэширует данные по блокам (BlockCache), а не по одному значению, блок 64 КБ ( по умолчанию), содержащие необходимые данные, будут кэшироваться.

Имея более 2–3 семейств столбцов в таблице, вы столкнетесь с некоторыми проблемами производительности, как объяснено здесь.

Надеюсь, это поможет.

person Alexander    schedule 26.02.2015
comment
Под разными столбцами вы подразумеваете разные столбцы в одном семействе столбцов. ? Если да, hbase поместит полное семейство столбцов в память (кеш), и без необходимости все мои изображения каждого измерения в одной строке будут кэшированы. Эту проблему я уже упоминал в вопросе. - person Harsh Sharma; 26.02.2015
comment
HBase поместит в память полное семейство столбцов, если это указано во время создания. Я думал, что кеш, который вы упомянули в вопросе, был BlockCache. - person Alexander; 26.02.2015
comment
Под кешем я имею в виду только блочный кеш. Могу ли я получить только выбранные столбцы семейства столбцов в кеше блоков? Я думал, что если я выполняю вызов для определенного столбца семейства столбцов, все семейство столбцов кэшируется в кеше блоков. Разве это не так? - person Harsh Sharma; 26.02.2015
comment
Из кулинарной книги администрирования Hbase: HBase поддерживает блочный кеш для повышения производительности чтения. При выполнении сканирования, если кеширование блоков включено и остается место, блоки данных, считанные из StoreFiles в HDFS, кэшируются в пространстве кучи Java регионального сервера, чтобы в следующий раз доступ к данным в том же блоке мог обслуживаться кэшированным блоком. . Блочный кэш помогает сократить дисковые операции ввода-вывода для извлечения данных. Таким образом, HBase будет кэшировать весь блок, содержащий запрошенные данные. Нет единственного значения, которое вы запрашиваете. - person Alexander; 26.02.2015