HBase преглежда ли всички HFiles в магазин, когато търси клетка

Тъкмо научавам за Hbase.

Да кажем, че търся даден ред-id. Клиентът намира регион-сървър и регион, който съхранява идентификатора на реда, като търси zookeeper, root файл и съответния мета файл. Дотук добре.

A) Регионът може да има много hfiles, които съдържат клетките за row-id - така ли е? Например {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 е същият

B) когато поискам конкретен row-id, HBase ще търси ли всички hfiles в магазина, за да компилира всички клетки за този row-id?


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


Отговори (1)


A) Регионът може да има много hfiles, които съдържат клетките за row-id - така ли е? Например {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.

B) когато поискам конкретен row-id, HBase ще търси ли всички hfiles в магазина, за да компилира всички клетки за този row-id?

Ако сте търсили колони от различни семейства колони в една и съща заявка (което не е препоръчително), тогава Hbase ще се справи с това вместо вас.

Въпросът е, че всеки флъш се създава нов файл. Тъй като записите първоначално се случват на WAL, записите са бързи и в точката на флъш се създава нов HFile.

Следната връзка обяснява подробно: HBase Internals

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
но това няма ли да означава, че един ред-id, col-fam може да бъде разделен между множество hfiles? - person hba; 24.09.2014
comment
Да, това е вярно. Ето защо ще се нуждаем от редовно уплътняване. - person Venkat; 24.09.2014
comment
добре, страхотно...така че когато получим един ред-идентификатор, семейство-колони, hbase е принуден да разглежда множество hфайлове - така ли е? - person hba; 25.09.2014