Семейство колонок Hbase - PullRequest
9 голосов
/ 05 марта 2012

В документации Hbase говорится, что следует избегать создания более 2-3 семейств столбцов, поскольку Hbase не очень хорошо обрабатывает более 2-3 семейств столбцов. Причиной этого является уплотнение и промывка и, следовательно, IO. Однако, если все мои столбцы всегда заполнены (для каждой строки), то я думаю, что это рассуждение не так важно, поэтому, учитывая, что мой доступ к столбцам является совершенно случайным (я хочу получить доступ к любой комбинации столбцов) - могу ли я иметь один семейство столбцов - одна конфигурация столбца (эффективно пытается сделать ее чисто столбчатой).

Есть много блогов / вики, объясняющих это, но все они, кажется, противоречат и добавляют больше путаницы. Я просто не в состоянии переварить тот факт, что Hbase предпочитает одно семейство столбцов, тогда какой смысл вызывать хранилище столбцов?

1 Ответ

21 голосов
/ 05 марта 2012

В настоящее время (хотя ожидается, что это изменится), все семейства столбцов для региона сбрасываются вместе. Это основная причина, по которой люди говорят: «HBase плохо работает с более чем двумя или тремя семействами столбцов». Рассмотрим два CF, каждый с одним столбцом. Колонка A: A хранит тексты всей веб-страницы. Колонка B: B хранит количество слов на странице. Таким образом, каждый раз, когда мы сбрасываем A: A (что случается чаще, потому что данные A: A намного больше), нам также нужно пройти через целую отдельную файловую маршрутизацию ввода-вывода для столбца B: B, даже если нет надо - с B: B только номера, я мог бы месяцами не сбрасывать.

Если вы храните A и B в одном и том же семействе столбцов (A: A и A: B), вы, вероятно, увидите значительно более высокую производительность сброса ввода-вывода, а поскольку большинство операций чтения HBase производятся исключительно из хранилища mems, вы, вероятно, найдите, что скорости чтения эквивалентны.

Кроме того, и, возможно, что еще более важно, если количество элементов в столбцах сильно отличается, то вашим региональным серверам потребуется поддерживать бесполезные в основном пустые файлы для ваших менее плотных семейств столбцов. Это никогда не изменится.

Все это доступно в HBase Book .

Итак, как и во всех подобных ситуациях производительности, измеряет , прежде чем решить, что такое "правильный" путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...