2013-06-06 2 views
0

Допустит, обновление не произошло до значения, он принадлежит кКак HBase внутренне управляет версиями?

RowKey 1288, 
ColunumFamily cf1 
Qualifier Q1 

Теперь один из этих значений изменяются, как же HBase отслеживает эти изменения?

  1. Является ли это с помощью обновлений переехал в другой HFile, извлечь все значения и из всех возможных HFile для 1288 -> Cf1 -> Q1 с отметкой времени и отвечать последним.

  2. Обновления хранятся только в магазине мейла? А во время основного сжатия HFiles обновляется с журналами обновлений в накопителе mem?

  3. Любой другой механизм?

+0

это может помочь вам понять внутренности записи (и читает) немного лучше: https://blogs.apache.org/hbase/entry/apache_hbase_internals_locking_and (как указано внизу, это точно для hbase 0.92) – divadpoc

ответ

0

В вашем примере, когда значение вставляется в первый раз, HBase будет хранить < 1288, cf1, Q1, v1, метки времени, PUT>. Если вы обновите v1 до v2, HBase добавит новую запись < 1288, cf1, Q1, v2, timestamp, PUT>. Он находится в магазине mem. Если memstore заполнен, он будет очищен до HFile.

Если вы хотите доступ использует < 1288, cf1, Q1> HBase будет читать все версии по просмотрит в HFiles (Ровно, ряд диапазона ключей, метку времени и Фильтр Блума в HFile поможет HBase быстро судить, если строка строки находится в некотором HFile). Наконец, по умолчанию он вернет вам последнее значение. Кроме того, вы можете попросить HBase вернуть больше версий.

Если вы хотите знать механизм в HBase, я предлагаю вам прочитать статью о bigtable. После этого, вы можете прочитать HBase: The Definitive Guide Глава 8 Архитектура и The Apache HBase™ Reference Guide Глава 9. Архитектура

+0

Итак, вы хотите сказать, что его вариант 2, Обновления сохраняются только в памяти ** mem **, а во время ** Major Compaction перезапускаются HFiles ** с журналами обновлений в хранилище mem. – user2458922

+0

Во-первых, это будет в memstore. Но когда memstore будет заполнен, он будет очищен до HFile. Основное уплотнение используется только для уплотнения небольших HFiles до одного большого HFile. – zsxwing

+0

«Но когда память будет заполнена, она будет очищена до HFile», . Так что это будет очищено от меньших HFiles? Который позже будет сделан большим во время MajorCompaction? – user2458922