2014-12-05 3 views
2

Я новичок в Hbase.Hbase хорош для случайных обновлений (помещать или удалять) в таблицу, но я не могу понять, как это работает hbase. Поскольку hbase использует HDFS для своего хранения, и его невозможно обновить что-нибудь в HDFS. Hbase использует memstore, чтобы обновлять записи и записывать любые изменения в memstore first.So MemStore содержит произвольное количество обновленных строк в отсортированном порядке ключа. Когда он выгружает данные на диск в hfile, является ли этот hfile глобально отсортированным с другим hfiles.как hbase random write works

После сброса всех файлов hfile файл hfile реплицируется в формате HDFS. Этот вопрос используется для журнала редактирования WAL. Файл журнала WAL также реплицируется в HDFS или нет. Для каждого обновления мы реплицируем обновление в HDFS.

ответ

5

эти записи в блоге могут помочь вам http://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/ http://blog.cloudera.com/blog/2012/06/hbase-write-path/

, но в основном, вы посылаете путы (ключ, значение), которое записывается в валя (для восстановления) и к memstore. Когда memstore достигает порога, memstore записывается в порядке сортировки на диск (hfile). через некоторое время у вас есть несколько hfiles на диске. поскольку вы знаете, что каждый файл имеет отсортированный контент, вы можете выполнить (отсортированное) слияние для запроса своих данных.

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

+0

Спасибо за ответ. Этот блог объяснил все ... Но у вас появилось еще одно сомнение в файле последовательности .... все добавления в файл последовательности будут реплицироваться во все блоки. –

+1

Это часть HDFS. HDFS выполняет аналогичную работу как HBase. Вы записываете данные с помощью OutputStream. что данные буферизуются до размера блока, а затем, как только блок достиг этого размера, реплицируются на N машин. более или менее то, как это работает, вы должны думать, что все неизменно, поэтому у вас нет понятия «запись», когда вы добавляете что-то, добавленное в память, и когда оно достигает порога, данные консолидируются (в блок), а затем реплицируется. – th30z

+0

Большое спасибо. Этот вопрос разразился у меня на весь день .. С большим чтением я получил свой тот же экземпляр HLog, который был предоставлен всеми регионами для записи в wal.I думаю, что экземпляр wal (fsOutputStream) не закрывается между любыми сообщениями. –

Смежные вопросы