Просматривает ли HBase все HFiles в хранилище при поиске ячейки

Я только изучаю Hbase.

Допустим, я ищу заданный идентификатор строки. Клиент находит регион-сервер и регион, в котором хранится идентификатор строки, ища zookeeper, корневой файл и соответствующий метафайл. Все идет нормально.

А) В регионе может быть много h-файлов, содержащих ячейки для идентификатора строки - это правильно? Например, {row-id-1, col-fam-id-1, col-id-1, val1} можно хранить в hfile-1, а {row-id-1, col-fam-id-1, col -id-2, val1} можно хранить в hfile-2. обратите внимание, что col-fam тот же

Б) когда я запрашиваю конкретный идентификатор строки, будет ли HBase искать все h-файлы в хранилище, чтобы скомпилировать все ячейки для этого идентификатора строки?


person hba    schedule 23.09.2014    source источник


Ответы (1)


А) В регионе может быть много h-файлов, содержащих ячейки для идентификатора строки - это правильно? Например, {row-id-1, col-fam-id-1, col-id-1, val1} можно хранить в hfile-1, а {row-id-1, col-fam-id-1, col -id-2, val1} можно хранить в hfile-2. обратите внимание, что col-fam такой же

Физически все члены семейства столбцов хранятся вместе в файловой системе. Поскольку настройки и спецификации хранения выполняются на уровне семейства столбцов, рекомендуется, чтобы все члены семейства столбцов имели одинаковый общий шаблон доступа и характеристики размера. Все ячейки в одном семействе столбцов хранятся в одном файле HFile.

Б) когда я запрашиваю конкретный идентификатор строки, будет ли HBase искать все h-файлы в хранилище, чтобы скомпилировать все ячейки для этого идентификатора строки?

Если вы искали столбцы из разных семейств столбцов в одном запросе (что не рекомендуется), то Hbase сделает это за вас.

Дело в том, что каждый флеш создает новый файл. Поскольку запись изначально происходит в WAL, записи выполняются быстро, и в момент сброса создается новый HFile.

По следующей ссылке подробно объясняется: Внутреннее устройство HBase

person Venkat    schedule 23.09.2014
comment
Я этого не понимаю, потому что каждый раз, когда есть флеш, hbase пишет в новый hfile. Если вы добавили новый столбец в cf или изменили значение одной ячейки. Как можно ожидать, что все ячейки для этого семейства столбцов будут храниться в одном hfile? Вы можете обновить на сотовом сегодня еще один tmrw, а тем временем мог быть флеш. - person hba; 24.09.2014
comment
Дело в том, что каждый флеш создает новый файл. Поскольку запись изначально происходит в WAL, записи выполняются быстро, и в момент сброса создается новый HFile. - person Venkat; 24.09.2014
comment
но разве это не означает, что один идентификатор строки, col-fam, может быть разделен между несколькими файлами hfile? - person hba; 24.09.2014
comment
Да это правда. Вот почему нам нужно регулярное уплотнение. - person Venkat; 24.09.2014
comment
хорошо, отлично... поэтому, когда мы получаем один идентификатор строки, семейство столбцов, hbase вынужден просматривать несколько файлов hfile - это правильно? - person hba; 25.09.2014