2013-06-27 2 views
3

Я занимался некоторыми исследованиями в области HBase, и сейчас я нахожу проблемы в понимании того, как работает путь чтения HBase. У меня есть общее понимание того, как это работает. Но у меня нет четкого понимания того, как он считывает несколько фильтров цветения HFiles. Какова цель метаблоков, как hbase использует его для чтения данных. Какова цель индексов в hfiles и как его использовать?Нужна помощь в понимании пути чтения Hbase

Следовательно, вам нужна ваша помощь в понимании этой концепции.

Ваше время очень ценится. Спасибо

ответ

4

Если во время чтения имеется более одного HFile, HBase проверит, существует ли данная строка. Если он там, HBase будет читать эту строку из всех HFiles (а также из memstore), чтобы клиент всегда получал последние данные. Извините, я не совсем понял block filters вещь. Не могли бы вы указать мне источник, в котором вы читали об этом? Это поможет мне в предоставлении вам полного ответа. (Вы имеете в виду Bloom Filter?)

Назначение метаблока - хранить большой объем данных. Метаблоки используются HFile для хранения BloomFilter, а строковый ключ связан с каждым обменом метало. Метаблоки хранятся в памяти до тех пор, пока не вызывается HFile.close().

Индекс написан для метаблоков, чтобы читать быстрее. Эти индексы содержат n записей (где n - количество блоков) с информацией о блоке (смещение блока, размер и первый ключ). И в конце в HFile записывается трейлер с фиксированным файлом. Он содержит смещения и подсчеты для всех индексов HFile, версии HFile, Compression Codec и т. Д. Теперь, когда начинается чтение, сначала вызывается HFile.loadFileInfo(), а файлы Trailers, которые были написаны ранее, загружаются в память вместе со всеми индексами. Он позволяет эффективно запрашивать ключи. Затем с помощью HFileScanner клиент ищет указанный ключ и перебирает его для чтения данных.

Я хотел бы указать вам на ссылки, которые помогли понять эти вещи. Надеюсь, вы найдете их полезными.

Link 1: Apache HBase I/O – HFile (Cloudera)

Link 2: HBase I/O: HFile (th30z)

Link 3: Scanning in HBase

НТН

+0

жаль, что это была опечатка :) – Maverick

+0

Большое спасибо, это помогло много понимания Hfiles. Нужно еще немного объяснений на пути чтения. Например, если у нас есть 5 Hfiles и 2 Hfiles содержат ключ, который мы ищем ... И скажем, для этого ключа, некоторое значение присутствует и в memstore, с этим вы можете объяснить , как будет поток? будет ли цветной фильтр, присутствующий в 5 HFiles, загружаться в память? – Maverick

+0

Добро пожаловать в ma'am :) .. Позвольте мне попробовать .. Если у вас есть 5 HFiles, тогда в обычном сценарии все 5 файлов будут сканироваться параллельным 5-позиционным способом, чтобы получить эту конкретную строку, что подразумевает, что вы делаете 5 дисков. Но если у вас есть BF, вы будете читать диски только для файлов, которые могут содержать эту конкретную строку i.e 5-2 в этом случае. BF будут загружены для всех открытых HFiles. Это звучит нормально? Или мне нужно его доработать? – Tariq